我熟悉Java中的并发编程,它提供了很多工具。但是,C ++并发编程并不是那么容易开始使用。
在C ++上同时开始编程的最佳方法是什么?有没有很好的库包装并发编程原语并为您提供更多高级构造?
我尝试了QtConcurrent,它为你提供了很好的MapReduce功能,但它严重偏向于使用Qt的并发计算,所以如果你不想使用Qt,它不是一个好的选择。
还有其他类似的图书馆吗?人们在这里使用什么?
感谢您的帮助, SNEG
答案 0 :(得分:11)
有几种选择:
答案 1 :(得分:4)
Morendil的建议(CSP - 沟通顺序流程)真的很有意思 - 它是一个非常不同的线程视图,一旦你绕过它就能很好地工作。我第一次用相当深奥的Occam语言为Transputers遇到过它,但这个想法一直困扰着我。
一个更传统的想法:boost::threads非常适合构建基于线程的并发程序。但它的水平相当低。
OpenMP处于比线程更高的级别,并且也得到了很好的支持。
答案 2 :(得分:3)
答案 3 :(得分:2)
This question以及答案可能对您有所帮助。
答案 4 :(得分:1)
英特尔的线程构建模块非常适合在单个数据并行循环级别引入并发性,它负责管理线程并自动分配工作。它可以以类似的方式用于OpenMP,但不需要显式的编译器支持。