我熟悉 Java 中的并发编程,它为此提供了很多工具。然而,C++ 并发编程并不是那么容易上手的。
在 C++ 上开始并发编程的最佳方式是什么?是否有任何不错的库可以包装并发编程原语并为您提供更高级的构造?
我尝试了 QtConcurrent,它为您提供了不错的 MapReduce 功能,但它严重偏向于使用 Qt 进行并发计算,因此如果您不想使用 Qt,这不是一个好的选择。
还有其他类似的库吗?人们在这里使用什么?
提前感谢您的帮助,斯内格
我熟悉 Java 中的并发编程,它为此提供了很多工具。然而,C++ 并发编程并不是那么容易上手的。
在 C++ 上开始并发编程的最佳方式是什么?是否有任何不错的库可以包装并发编程原语并为您提供更高级的构造?
我尝试了 QtConcurrent,它为您提供了不错的 MapReduce 功能,但它严重偏向于使用 Qt 进行并发计算,因此如果您不想使用 Qt,这不是一个好的选择。
还有其他类似的库吗?人们在这里使用什么?
提前感谢您的帮助,斯内格
Morendil 的建议(CSP - 通信顺序进程)非常值得一看——它是一种非常不同的线程视图,并且一旦你将头绕在它周围,它就会很好地工作。我第一次遇到它是在 Transputers 相当深奥的 Occam 语言中遇到的,但这个想法一直困扰着我。
一个更传统的想法:boost::threads非常适合构建基于线程的并发程序。虽然水平很低。
OpenMP比线程级别更高,并且得到很好的支持。
这个问题连同答案可能会对您有所帮助。
英特尔的线程构建块非常适合在单个数据并行循环级别引入并发性,它负责管理线程和自动分配工作。它可以以与 OpenMP 类似的方式使用,但不需要显式编译器支持。