2011-09-25 112 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

相关问题