首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VC10 PPL或为stl线程准备

VC10 PPL或为stl线程准备
EN

Stack Overflow用户
提问于 2013-05-21 01:52:54
回答 2查看 778关注 0票数 2

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

我的问题是,我应该更喜欢什么,PPL还是临时增强然后std?我想听听你对两者的经验,哪一个更强大,更方便,优点和缺点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 02:00:40

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

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

票数 3
EN

Stack Overflow用户

发布于 2013-05-21 02:17:21

Boost线程很容易,可移植,有很好的文档,是我现在C++中最常用的并发形式。如果你正在考虑进行linux构建,不要依赖任何VC特性,否则你的迁移将是非常痛苦的(之前我自己也是这样做的……)。

尽管如此,新的STL内容在大多数方面与boost非常相似,因此您可以使用boost作为std的垫脚石,而不会有太多痛苦。在我做出具体决定之前,我会在differences between boost and C++11 threads上阅读这篇文章,并解释你的用例。

我使用PPL的经验相当有限,但创建任务(线程)的感觉可能与传统线程略有不同,并且具有不同的控制路径选项。如果采用PPL方法,在Visual Studio/Windows中也很有可能得到修复--所以在评估库选择时要注意这一点。我确实读到过好的PPL示例是有点稀疏的(可能是因为快速搜索在比较PPL和其他并发库时没有给出更好的结果)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16655305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档