2011-09-25 92 views
7

可能重複:
how to set CPU affinity of a particular pthread?如何在不同內核上運行不同的線程?

我寫一個C++程序,在Ubuntu使用克++編譯器。我有4個線程在我的程序和4個核心在我的CPU。我想確保每個線程都將運行在不同的核心上。我很少熟悉pthread。

+2

我可以問你爲什麼要這樣做?如果確保踏板不會彼此碰撞(以便它們可以同時運行),則操作系統將負責在任何內核有空閒時安排它們。 – James

+0

@autopulated,實際上具有核心和套接字親和力會極大地影響性能。想象fork/join,通常情況下你希望額外的線程被安排在空閒內核中,而不是以相同的速度啓動(因爲它通常更快),以便實際並行運行。此外,你更願意安排在同一個插座上用於利用局部性。 – bestsss

+0

地理位置是一個很好的理由,但正如David所指出的那樣,結果並不一定像你期望的那麼好。 – James

回答

13

不要這樣做。讓系統調度線程。如果您將線程關聯到不同的核心,則只會妨礙調度程序。當您的應用程序是唯一使用CPU的應用程序時,調度程序將自然地將每個線程安排在單獨的核心上。

+8

這是一條評論,而不是答案。這可能是正確的,但如果練習的想法是找出線程被固定時會發生什麼,那麼你就不鼓勵學習。爲什麼不在刻錄Linux手冊時,知識是危險的; -p –

+0

+1對你有幫助的意見 – Saeed

相關問題