回答

1

我看不出有這種情況。

請記住,任何啓用了多處理器的操作系統都會自動分配處理器時間,因爲它認爲適合嘗試平衡處理器負載。

這意味着,實際上,根據線程優先級,您正在運行的任何進程線程將不斷中斷,以便操作系統可以將處理器時間分配給其他進程。同一線程內的單個計算甚至可能不會在同一個處理器上執行。

如果您修復了只在一個指定處理器上運行的進程代碼,那麼這可能會妨礙其性能,因爲它不允許操作系統平衡處理器負載。

我想你可以把它的大部分作爲關鍵部分,但是這會阻礙你在其他領域的應用,特別是處理任何子線程。

0

至少在理論上,似乎有可能通過讓線程在不同內核之間彈跳來降低系統性能。由於許多多核設計爲每個內核都包含單獨的L1高速緩存,因此,只要線程移動到新內核,線程之前訪問的任何數據都不會再緩存到新內核中,而必須從更高級別的緩存中獲取(或記憶)。保持線程運行在相同的內核上將增加L1緩存具有與線程正在做什麼相關的數據的可能性。當然,這個影響有多大取決於其他因素,比如緩存的大小以及核心上「同時」調度了多少其他線程。

+0

除非實際上每個內核運行一個線程(這似乎不太可能),那麼交換內核的效果將與在同一內核上切換上下文的效果非常相似。 – 2009-07-09 18:27:50