什么类型的多线程最好学习?

Qua*_*arl 7 c++ multithreading

我想学习C++中的多线程,但我不确定哪种类型最有用.我看过教程的是:

  • Windows本机调用
  • OpenMP的
  • 促进

(我确信可能还有更多.)

每个人的主要特征是什么,它们最适合用于什么?

注意:我已经通过手动创建线程在C#中完成了一些多线程,线程的更复杂性只会让它变得更有趣.:)

Joh*_*nck 5

如果你有更多的C背景,我会从pthread开始,如果你习惯于更习惯的C++,我会从Boost Thread开始.要么是合理的便携式和广泛使用.


pic*_*c11 3

TBB怎么样?它是可移植的,并且具有易于使用的并行模板模式、并发容器、任务调度程序和可扩展的内存分配器。TBB 可以让您直接管理线程,但在大多数情况下这不是必需的。

就我个人而言,我会远离特定于平台的线程,除非迫切需要做一些特定于平台的事情。

Boost 线程可移植且易于使用,但既没有并行模式,也没有并发容器。您需要手动管理线程,这很快就会变得丑陋。

PThreads 在 Windows 及其 C 上不可用。您确实想在 C++ 中进行多线程,而不是 C。RAII 与互斥体和作用域锁很好地混合。

另一个选项是 Visual C++ 2010 中的 PPL。它与 TBB 类似,但您可能猜到仅适用于 Windows。

OpenMP 易于使用,但不太灵活。既然你已经学过 C++,你应该使用更严肃的东西,比如 TBB 或 PPL。由于某些奇怪的原因,Visual C++ 2010 不支持 OpenMP 3。太糟糕了。