【问题标题】:How this pthread actually works?这个 pthread 实际上是如何工作的?
【发布时间】:2010-03-08 17:33:51
【问题描述】:

我实际上在我的项目上使用 SMP 编译器,并且想使用 pthreads 进行编码,并且听说了许多并行的东西打开 mpi 等等,所以从调用 pthread 时如何将这个线程分配给核心开始,有没有如何通过 pthread 将线程分配给不同的内核?

【问题讨论】:

    标签: compiler-construction concurrency pthreads smp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      系统会将线程分配给可用内核,并在其他地方有空闲资源时移动它们。

      操作系统在分配资源方面通常比我做得更好,但如果您真的愿意,大多数操作系统都有一种方法可以将线程分配/限制到特定的核心/处理器。在 linux 上,使用sched_setaffinity

      【讨论】:

        【解决方案3】:

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

        在深入研究特定的线程库/思维方式之前,您似乎需要了解多线程编程的一般介绍/入门知识。在做任何其他事情之前,请阅读上面 Amit 的“What is a thread”部分,然后开始查看 POSIX 线程、Windows 线程、TBB、Boost 线程或任何其他你觉得有趣的库/包装器的细节。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-07
          • 1970-01-01
          • 2014-10-24
          • 1970-01-01
          • 2021-01-21
          • 2011-09-27
          相关资源
          最近更新 更多