icf*_*ntv 15 multithreading processor single-threaded
有人可以解释一下,编写一个运行在单核处理器上的多线程代码是否有任何优势?例如,一种处理文档页面的方法,使得页面与上述代码段相互排斥.
乍一看,似乎没有优势,因为真正的多线程是不可能的.即,OS无论如何都必须上下文切换线程.我想知道是否只是以单线程方式编写代码实际上可能更有效.
显然,有很多情况下编写多线程代码是有意义的,但同样,我的问题是当应用程序在单核处理器上运行时是否真的有这样做的优势.
编辑:请注意,我没有说"应用程序"而是"代码段" - 请看上面的示例.显然,拥有一个多线程应用程序是有好处的.
Ben*_*den 12
仍然有待获得优势,但它们有点情境化.
在许多情况下,给多个线程的东西将允许它从其他进程声明更多的系统资源.这很难平衡,你引入的每个线程都会增加一些开销,但这可能是一个原因.
如果您正在处理多个可能阻塞的资源 - 例如文件IO或GUI交互或诸如此类的东西,则多线程可能至关重要.
Ber*_*ter 11
是的,多线程在单核中很有用.如果应用程序中的一个线程被阻塞等待某些东西(比如来自网卡的数据或等待磁盘写入数据),CPU可以切换到另一个线程继续工作.
即使在单核处理器的时代,BeOS也是以普及的多线程编写的.结果是一个非常敏感的操作系统,虽然是一个相当困难的操作系统.
| 归档时间: |
|
| 查看次数: |
15655 次 |
| 最近记录: |