我正在使用目前完全是单线程的中型 C++ 代码库。然而,现在是追求并发性和并行性以提高性能的时候了。我对 Google 的 Go 编程语言的并发模型非常感兴趣,它具有非常轻量级的 goroutine 和通信通道系统。
遗憾的是,出于各种完全正当的原因,该项目需要保留在 C++ 中。所以我的问题是:是否有一个 C++ 库可以近似于 Go 的并行范式?具体来说,是否有可用于 C++ 的 goroutine 或 go 通道的近似值?我的后备计划只是使用 boost::thread。
有问题的应用程序是金融预测领域长期运行的专有模拟。它通常受 CPU 限制,但当新数据可用时也会在 IO 上被阻塞。所涉及的许多计算不依赖于先前的结果,并且可以相当容易地并行运行。能够在分布式上下文中运行应用程序是一项长期目标,但不是需要立即解决的目标。
原文由 Derek Thurn 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您的目标主要是加快计算速度,那么英特尔的 TBB (线程构建块)是(恕我直言)比从
boost::thread
推出自己的劣质版本更好的选择。