有没有办法使用boost线程库设置线程关联到处理器核心?

Kes*_*ion 4 c++ multithreading boost-thread affinity

如果我需要处理器内核100%运行十几秒,或者如果我让系统决定如何处理线程,我会获得更好的性能,这样做是否是个好主意?

我需要的是快速执行,我担心系统可能会在使用所有内核之前花费几秒钟,但我还没有找到任何方法来使用boost线程.

Jam*_*arp 5

您的操作系统的调度程序应该按照毫秒而不是秒的顺序为您处理.详细信息取决于您正在运行的操作系统,但一种常见方法是,当调度程序在空闲CPU上运行时,它将检查是否可以从另一个具有太多CPU的CPU中窃取一个线程.这可以快速平衡所有CPU的线程.

作为一般规则,如果您需要设置CPU亲和性,要么您具有非常特定且不寻常的用例,要么您的操作系统存在错误.


Dav*_*ber 5

在性能非常高的系统中,如果将对缓存敏感的低内存占用任务分配给特定内核,并且内核几乎只执行此任务,则性能会提高.效果是提高缓存命中率,这可以产生巨大的差异.如果不是这种情况,请将操作保留给操作系统的调度程序.它(如上所述)是一种相当专业的情况,但当它们出现时,处理器亲和力值得研究.