具有CPU绑定例程的多线程?

时间:2012-06-11 18:11:51

标签: multithreading

我得到的是混合信号,让多个线程执行相同的CPU绑定例程是有意义的(当然,每个线程都通过不同的数据)。

如果您受CPU限制,那么您已经对处理器征税,对吧?为什么添加额外的CPU工作才有意义呢?您是否应该尝试将CPU绑定线程的数量与核心相匹配?

单核机器的情况怎么样?多线程CPU绑定操作是否有意义?

提前致谢。

1 个答案:

答案 0 :(得分:12)

  

如果您受CPU限制,那么您已经对处理器征税,对吧?为什么添加额外的CPU工作才有意义呢?您是否应该尝试将CPU绑定线程的数量与核心相匹配?

是的,这基本上就是这个想法。如果算法是CPU绑定的,它将占用一个处理核心。如果您的系统中有4个,那么使用全部4个可以显着提高整体吞吐量。如果没有多个线程,您将只使用单个核心来处理数据。

  

单核机器的情况怎么样?多线程CPU绑定操作是否有意义?

它可以,但通常只有当它不是纯粹 CPU绑定时。如果您的例程完全受CPU限制,则每个核心通常需要不超过1个线程。但是,如果算法的某些部分具有其他特征,并且受其他特性约束,则该部分有时可以从整个例程中获益。