能有人請解釋,如果有任何好處真的編寫多線程的一段代碼,與單核單處理器上運行?例如,處理文檔頁面的方法,使得頁面與上述代碼段相互排斥。單對多線程的單核處理器的編程
乍一看,它似乎並不像有會是一個優勢,因爲真正的多線程是不可能的。即,操作系統將不得不上下文切換線程。我想知道,如果僅以單線程方式編寫代碼實際上可能會更有效。很顯然,編寫多線程代碼很有意義的情況很多,但是我的問題是,當應用程序在單核處理器上運行時,是否真的有這樣的優勢。
編輯:請注意,我沒有說「應用程序」,而是「代碼片」 - 看看我上面的示例。顯然有一個多線程應用程序的好處。
你可以有線程等待文件加載,網絡數據來,即使只有一個人可以一次使用處理器。 – zch
正如@zch指出的那樣,即使在單個內核上,IO綁定的應用程序也可以利用多線程優勢,儘管你永遠不會獲得超過2倍的加速比(如果IO變得太過瓶頸,CPU加速將不會阿米達爾定律)。更常見的原因是設計多線程應用程序,即使您目前只有1個內核,也是爲了在多核心可用時輕鬆移植多核。設計一次應用程序會更好,而不會硬編碼當前的硬件限制,然後在有更多硬件資源可用時重新編寫應用程序。 – Michael
@Michael我會同意,如果您確信您最終將移植到多核系統,但現在由於您未來可能需要處理的事情而使您的代碼更復雜是不值得的。 –