这个pthread实际上是如何工作的?

时间:2010-03-08 17:33:51

标签: compiler-construction concurrency pthreads smp

我实际上是在使用SMP进行编译的项目,并且希望使用pthreads进行编码并且听到许多并行的东西打开mpi等等,那么从调用pthread时如何将此线程分配给core开始,是否有任何通过pthreads为不同核心提供线程的方法?

3 个答案:

答案 0 :(得分:1)

查看诸如this之类的pthreads教程。但总的来说,我建议使用比pthreads更高级别的库,因为使用它们会更简单/更系统。例如,Boost :: Threads或Intel TBB。

答案 1 :(得分:0)

系统会将线程分配给可用核心,如果其他地方有免费资源,则移动它们。

在分配资源时,操作系统通常比我做得好得多,但如果你真的想要,大多数操作系统都有办法将线程分配/限制到特定的核心/处理器。在linux上,使用sched_setaffinity

答案 2 :(得分:0)

最简单的答案是肯定的 - 通常不同的线程可能会在不同的核心上自动运行,而无需指定线程的运行位置。

在深入了解特定的线程库/思维方式之前,您似乎需要一个关于多线程编程的介绍/入门。在做任何其他事情之前,请阅读Amit上面的“What is a thread”部分,然后开始查看POSIX线程,Windows线程,TBB,Boost线程或任何其他您感兴趣的库/包装器的具体细节。 / p>