我正在使用MSVC 2010启动一个新的MFC项目,现在尝试确定要用于并发任务的库。我知道新的C++ 0x线程功能,但未在VC10中实现。 VC12还不是一个选择,但它将在将来推出。我确实拥有对我来说不错的Microsoft PPL,但是我们可能会从Windows迁移到Linux,以进行新的项目,因此对于重用代码,也许与STL一起使用更容易移植?为此,我可以选择使用boost来更改为VC12的std。
我的问题是我应该优先选择PPL还是暂时增强然后再进行性病?我想听听您在这两者上的经验,这两者都更强大,更方便,也有优缺点。
最佳答案
PPL和C++ 11并发库并不是真正的直接替代品。 PPL提供了一种基于任务的更高级别的并发方法,与直接使用std::thread或类似的线程库管理线程相比,PPL更加易于使用和高效。 PPL还包括诸如并行算法(parallel_for_each,parallel_transform,parallel_reduce,parallel_sort等)和并发容器之类的东西,这些并没有包含在C++ 11并发库中。
还值得注意的是,PPL和英特尔的TBB(线程构建模块)旨在在很大程度上共享同一接口(interface),并且Linux支持TBB,因此在使用PPL时具有一定的跨平台可移植性。英特尔,微软和NVIDIA联合提出了一项针对基于PPL / TBB的C++标准的 future 版本(C++ 14及更高版本)的并行算法库的建议。
关于c++ - VC10 PPL或准备使用STL线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16655305/