实现 Go goroutine 或 Go channel 的 C++ 库?

标签 c++ concurrency go

我正在使用目前完全是单线程的中型 C++ 代码库。然而,现在是追求并发性和并行性以提高性能的时候了。我对 Google Go 编程语言的并发模型非常感兴趣,它具有非常轻量级的 goroutine 和通信 channel 系统。

遗憾的是,出于各种完全正当的原因,该项目需要保留在 C++ 中。所以我的问题是:是否有一个 C++ 库可以近似于 Go 的并行范式?具体来说,是否有可用于 C++ 的 goroutine 或 go channel 的近似值?我的后备计划只是使用 boost::thread。

有问题的应用程序是针对财务预测领域的长期专有模拟。它通常受 CPU 限制,但当新数据可用时也会在 IO 上被阻塞。所涉及的许多计算不依赖于先前的结果,并且可以相当容易地并行运行。能够在分布式环境中运行应用程序是一项长期目标,但不是需要立即解决的目标。

最佳答案

如果您的目标主要是加快计算速度,英特尔的 TBB (线程构建 block )是(恕我直言)比从 boost::thread 滚动您自己的劣质版本更好的选择。

关于实现 Go goroutine 或 Go channel 的 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454444/

相关文章:

c++ - 为什么那个类型是 double 而不是 float?

go - 我已经用 GoLang 编写了代码,那么如何使用 Hyper-ledger Fabric Composer 获取链码?

c++ - 如何检查一个类是否有特定的构造函数?

c++ - 在 C++ 中使用模板 - 从方法返回值

c++ - 创建列表 vector 时出错

multithreading - Sidekiq 在单个 heroku dyno 中运行多个作业?

java - 同时写入数组时的可见性问题

c++ - 发布获取语义以计算平均值

go - 如何将 Base64 编码的 p12 转换为 tls.Certificate

go - 在一个事务中在 golang 中执行多个查询的惯用方式