C++平台无关的并发编程库

3
我熟悉Java中的并发编程,它提供了许多工具。然而,在C++中进行并发编程并不容易。
在C++上开始并发编程的最佳方法是什么?有没有一些很好的库可以封装并发编程原语并为您提供更高级别的结构?
我尝试过QtConcurrent,它提供了很好的MapReduce功能,但它对使用Qt进行并发计算有很大偏见,因此如果您不想使用Qt,它就不是一个好选择。
还有其他类似的库吗?这里人们都用什么?
提前感谢您的帮助, sneg
5个回答

11

4
Morendil的建议(CSP - communicating sequential processes)确实很有意思,值得一看——它是一种非常不同的线程视图,一旦你理解了它,它就能很好地工作。我第一次在Transputers的相当晦涩的Occam语言中遇到了它,但这个想法一直留在我的脑海中。
一个更传统的想法:boost::threads非常适合构建基于线程的并发程序,但它相当底层。 OpenMP比线程更高级,也得到了很好的支持。

是的,你说得对 - 使用OpenMP时,开发人员不必担心实际线程。它是一个并行性库,而不是线程库。 - Joris Timmermans

3
你可以查看CSP,它有一个C++实现。虽然与Java的线程原语有很大不同,但是可以帮助你更好地理解并发编程。请参考以下链接:CSPC++实现。

2

1

英特尔的线程构建块非常适合在个别数据并行循环的级别引入并发,并且它会自动处理管理线程和分配工作。它可以类似于OpenMP进行使用,但无需显式编译器支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接