我有一个创建3个线程的进程。我想将1个线程分配给1个cpu内核(CPU有8个物理内核),这些内核只运行我的线程。因为我想确保我的计算线程始终以最高优先级运行。
例如:线程1分配给核心1,核心1仅分配给线程1.核心0,2,3,4,5,6,7可以自由地运行其他进程的其他线程。
有没有图书馆支持这个?或者有人知道该怎么做?
答案 0 :(得分:2)
这通常称为处理器或线程关联,并且您可能会在平台级别处理它。
在Windows上,您可以使用SetThreadAffinityMask功能。
答案 1 :(得分:2)
在Linux上你有sched_setaffinity和sched_getaffinity。 http://linux.die.net/man/2/sched_setaffinity
答案 2 :(得分:0)
除了SetThreadAffinityMask之外,还有一些SetThreadIdealProcessor,如果您在运行它的核心上做出错误的决定(即几个cpu饥饿的应用程序锁定到同一个核心),它会更宽容。