将1个cpu核心分配给1个线程c ++

时间:2016-07-13 06:48:51

标签: c++ windows multithreading

我有一个创建3个线程的进程。我想将1个线程分配给1个cpu内核(CPU有8个物理内核),这些内核只运行我的线程。因为我想确保我的计算线程始终以最高优先级运行。

例如:线程1分配给核心1,核心1仅分配给线程1.核心0,2,3,4,5,6,7可以自由地运行其他进程的其他线程。

有没有图书馆支持这个?或者有人知道该怎么做?

3 个答案:

答案 0 :(得分:2)

这通常称为处理器或线程关联,并且您可能会在平台级别处理它。

在Windows上,您可以使用SetThreadAffinityMask功能。

答案 1 :(得分:2)

在Linux上你有sched_setaffinity和sched_getaffinity。 http://linux.die.net/man/2/sched_setaffinity

答案 2 :(得分:0)

除了SetThreadAffinityMask之外,还有一些SetThreadIdealProcessor,如果您在运行它的核心上做出错误的决定(即几个cpu饥饿的应用程序锁定到同一个核心),它会更宽容。