C++ VC10 PPL或准备STL螺纹

C++ VC10 PPL或准备STL螺纹,c++,concurrency,boost-thread,ppl,C++,Concurrency,Boost Thread,Ppl,我正在使用MSVC2010启动一个新的MFC项目,现在尝试决定将哪个库用于并发任务。我知道新的C++0x线程特性,但它没有在VC10中实现。VC12还不是一个选项,但它将在未来出现。我有微软的PPL,对我来说很不错,但我们可能会从Windows转移到Linux,以便新项目的到来,所以对于重用代码来说,STL可能更具可移植性?为此,我可以选择使用boost,以便使用VC12更改为std 我的问题是我应该选择什么,PPL还是暂时性的促进然后是std?我想听听你的经验,哪一个更强大,更方便,更有利。缺

我正在使用MSVC2010启动一个新的MFC项目,现在尝试决定将哪个库用于并发任务。我知道新的C++0x线程特性,但它没有在VC10中实现。VC12还不是一个选项,但它将在未来出现。我有微软的PPL,对我来说很不错,但我们可能会从Windows转移到Linux,以便新项目的到来,所以对于重用代码来说,STL可能更具可移植性?为此,我可以选择使用boost,以便使用VC12更改为std


我的问题是我应该选择什么,PPL还是暂时性的促进然后是std?我想听听你的经验,哪一个更强大,更方便,更有利。缺点是:< /P> Boost线程是容易的、可移植的、有文档的,而且我现在通常在C++中使用并发方式。如果你正在考虑让linux版本继续运行,不要依赖任何VC功能,否则你的行动将非常痛苦(我自己以前也是这么做的…)

也就是说,新的STL内容在大多数方面与boost非常相似,因此您可以使用boost作为std的垫脚石,而无需太多痛苦。在我做出具体决定之前,我会阅读这篇文章并解释您的用例


我在PPL方面的经验相当有限,但是任务(线程)的创建可能感觉有点不同于传统线程,并且具有不同的控制路径选项。如果您选择PPL路线,那么在VisualStudio/Windows中也很可能会得到修复,因此请在评估库选择时保留这一点。我确实读到过好的PPL示例有点稀疏(可能是为什么快速搜索在比较PPL和其他并发库时没有给我更好的结果)

PPL和C++11并发库并不是真正的直接替代品。PPL提供了一种更高级别的、基于任务的并发方法,与直接使用std::thread或类似的线程库管理线程相比,PPL更容易使用,也更高效。PPL还包括并行算法(parallel_for_each、parallel_transform、parallel_reduce、parallel_sort等)和C++11并发库中未包含的并发容器

还值得注意的是,PPL和Intel的TBB(线程构建块)设计为在很大程度上共享同一接口,并且Linux上支持TBB,因此使用PPL时具有一定的跨平台可移植性。英特尔、微软和NVIDIA有一个联合建议,用于基于PPL/TBB的C++版本(C++ 14和更高版本)的未来版本的并行算法库。