最好学习哪种类型的多线程

What type of multithreading would be best to learn?

本文关键字:类型 多线程 种类 学习      更新时间:2023-10-16

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

  • Windows本地调用
  • OpenMP

(我敢肯定可能还有更多)

每种功能的关键特性是什么?它们最适合用于什么?

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

如果您有更多的C背景,我会从pthreads开始,如果您习惯于更习惯的c++,我会从Boost Thread开始。

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

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

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

PThreads在Windows和C上是不可用的。你真的想在c++中做多线程,而不是C。

另一个选择是Visual c++ 2010中的PPL。它类似于TBB,但你可能猜到它只适用于Windows。

OpenMP易于使用,但不是很灵活。既然已经学习了c++,那么应该使用更严肃的语言,比如TBB或PPL。由于一些奇怪的原因,Visual c++ 2010不支持openmp3。太糟糕了。

如果你想要可移植,学习Posix线程。你知道,所有的线程库或多或少都提供了相同的特性集,所以这取决于你,但是Posix将为你提供基础。

openMP并不是你所说的"多线程"。

WinThreads (Windows)和pthreads (Linux)是POSIX线程,可能是您入门的最佳选择。了解进程和线程之间的区别非常重要,然后了解与它们相关的各种内存访问模型。接下来,尝试并发方法,如OpenMP和MPI"线程"。

有一些基本的概念会被重复。好好学习。