能有人请解释,如果有任何好处真的编写多线程的一段代码,与单核单处理器上运行?例如,处理文档页面的方法,使得页面与上述代码段相互排斥。单对多线程的单核处理器的编程
乍一看,它似乎并不像有会是一个优势,因为真正的多线程是不可能的。即,操作系统将不得不上下文切换线程。我想知道,如果仅以单线程方式编写代码实际上可能会更有效。很显然,编写多线程代码很有意义的情况很多,但是我的问题是,当应用程序在单核处理器上运行时,是否真的有这样的优势。
编辑:请注意,我没有说“应用程序”,而是“代码片” - 看看我上面的示例。显然有一个多线程应用程序的好处。
你可以有线程等待文件加载,网络数据来,即使只有一个人可以一次使用处理器。 – zch
正如@zch指出的那样,即使在单个内核上,IO绑定的应用程序也可以利用多线程优势,尽管你永远不会获得超过2倍的加速比(如果IO变得太过瓶颈,CPU加速将不会阿米达尔定律)。更常见的原因是设计多线程应用程序,即使您目前只有1个内核,也是为了在多核心可用时轻松移植多核。设计一次应用程序会更好,而不会硬编码当前的硬件限制,然后在有更多硬件资源可用时重新编写应用程序。 – Michael
@Michael我会同意,如果您确信您最终将移植到多核系统,但现在由于您未来可能需要处理的事情而使您的代码更复杂是不值得的。 –