在任何情况下,在单个核心CPU上使用多线程会有好处吗?

时间:2019-05-29 15:08:28

标签: multithreading

我知道可以在单个核心CPU中使用多线程。但是有人可以帮助我解决可能有用的情况。在一次采访中有人问我这个问题。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

线程是并发性的模型:使用线程可以使您编写一个程序,其中多个有状态的活动以各自的进度彼此独立地进行。

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

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


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