2012-06-11 12 views
2

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

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

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

在此先感谢。

+1

多线程一个CPU绑定例程的意义与它所能做到的一样。 – Mysticial

回答

9

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

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

单核心机器的情况如何?多线程的CPU绑定操作是否有意义?

它可以,但通常只有当它不是纯粹 CPU绑定。如果您的例程完全受CPU限制,那么通常每个内核不要超过1个线程。但是,如果算法的某些部分具有其他特征并受其他事物约束,则该部分可能会受益于整个例程都是线程化的。

+0

谢谢你这个好的答案。 – jglouie