首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有在单核CPU上使用多线程是有好处的?

有没有在单核CPU上使用多线程是有好处的?
EN

Stack Overflow用户
提问于 2019-05-29 23:08:28
回答 2查看 42关注 0票数 1

我知道在单核CPU中使用多线程是可能的。但是有没有人能帮我解决一个可能有用的情况或场景呢?我在一轮面试中被问到了这个问题。

EN

回答 2

Stack Overflow用户

发布于 2019-05-29 23:34:46

即使是具有单核CPU的机器也有I/O设备:网卡、硬盘、键盘、鼠标等。典型的线程将计算与I/O操作混合在一起。当一个线程等待从设备读取数据时,它会释放CPU,如果另一个线程存在,它可以被另一个线程使用,这意味着使用了多线程。

当花费在I/O操作上的时间可以忽略不计时,多线程仍然是有用的-它可以使程序更简单,如果任务可以自然地并行化的话。

票数 1
EN

Stack Overflow用户

发布于 2019-05-30 03:28:08

线程是并发的一种模型:使用线程使您能够编写一个程序,在该程序中,多个有状态的活动各自以自己的速度进行,彼此独立。

并行处理是并发的一种形式,因此线程是利用多处理器系统资源的一种方式,但在程序中具有并发活动还有其他原因。

一个典型的例子是可以支持任意多个并发的、有状态的客户端连接的服务器。服务器有一个等待新连接的线程,每次接受新连接时,该线程都会创建一个新的客户端线程。每个客户端线程等待来自其客户端的消息,并相应地推进其状态。每个客户端连接的状态可以部分地隐含在客户端线程堆栈上的局部变量中,以及在任何给定时刻线程在代码中执行的位置。这种设计比单个线程更容易理解,单个线程必须接受来自每个客户端的输入,并显式存储和更新每个客户端的状态。

我个人的偏好是通过首先说明线程等待的内容来描述我创建的每个线程:上面示例中的服务器线程等待新的客户端。每个客户端线程等待来自其客户端的命令。在GUI应用程序中,GUI线程等待键盘和鼠标事件。在并行处理场景中,有等待执行任务(计算)的工作线程。等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56363645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档