学习哪种类型的多线程最好? 我想在C++中学习多线程,但我不确定什么类型最有用。我看过的教程有: Windows本机呼叫 OpenMP 促进

学习哪种类型的多线程最好? 我想在C++中学习多线程,但我不确定什么类型最有用。我看过的教程有: Windows本机呼叫 OpenMP 促进,c++,multithreading,C++,Multithreading,(我相信可能还有更多。) 每个产品的主要特点是什么?它们的最佳用途是什么 注意:通过手动创建线程,我已经在C#中完成了一些多线程,线程的复杂性越高,它就越有趣。:)

(我相信可能还有更多。)

每个产品的主要特点是什么?它们的最佳用途是什么


注意:通过手动创建线程,我已经在C#中完成了一些多线程,线程的复杂性越高,它就越有趣。:)如果您想要移植,请学习Posix线程。你知道,所有的线程库都或多或少地提供相同的特性集,所以这取决于你,但是Posix将为你提供基础

openMP并不完全是您所说的“多线程”。

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

有一些基本概念会被重复。把它们学好。

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

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

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

线程在Windows及其C上不可用。您确实希望在C++中进行多线程,而不是C.RAIII与互斥和范围锁混合好。

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


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

HMM pHOTH看起来不错,它是C的唯一东西,现在我的演讲说不要把C和C++结合起来,因为它坏(至少在内存管理中),你认为这是否重要?如果你认为最便携的选项是不运行在90%的PC上的,那么你就有了一个有趣的“便携式”定义。无论如何,在C语言中,pthreads是除Windows之外的所有地方的de-factor标准,Windows有自己的线程API。在C++中,Booost线程是你最好的选择。(它是可移植的,它是惯用的C++,它对C++ 11中的语言添加了线程功能的强大启发。”Jalf:谢谢,我认为从约翰的答案中得到最好的提升,知道任何好的教程或示例代码,让我开始一个好的OO线程设计。@ QuantumKarl:ONO与什么有关系?hing?Boost.Thread文档中有一些关于如何使用库的示例。至于如何构造代码?与构造任何其他代码的方式相同。@jalf:好的,我不知道OO线程是否会有所不同,因为我看的其中一个教程#include特别是OO多线程,所以我不确定我是否修复了你的帖子,因为你很清楚不愿意花时间把它写出来TBB看起来很有趣。它在所有品牌的芯片上都能使用吗?你知道它与Booost相比有多大效率吗?:TraseRaIII看起来也很有趣。我有很多学习/阅读的准备。我想我会通过PPL,但对2010不太感兴趣。谢谢!PS我同意C++中的线程,C++是我想学习的,而且在制作C++时。为什么混合使用C语言?