c++ - 是否曾在大型多线程 C++ 程序中使用过通信顺序进程?

标签 c++ multithreading

我目前正在编写一个大型多线程 C++ 程序(> 50K LOC)。

因此,我一直有动力阅读大量有关处理多线程代码的各种技术。我发现一个很酷的理论是:

http://en.wikipedia.org/wiki/Communicating_sequential_processes

它是由一个小有名气的人发明的,他对并发编程做出了其他不平凡的贡献。

然而,CSP在实践中使用了吗?谁能指出任何以 CSP 风格编写的大型应用程序?

谢谢!

最佳答案

CSP 作为过程演算,从根本上说是一种理论事物,它使我们能够形式化和研究并行程序的某些方面。

如果您想要的是能够构建分布式程序的理论,那么您应该看看 parallel structured programming .

并行结构化编程是当前 HPC(高性能计算)研究的基础,并为您提供了一种方法论,介绍如何处理和设计并行程序(本质上是通信计算节点的流程图)和运行时系统 来实现它们。

并行结构化编程的核心思想是算法框架,最初由 Murray Cole 开发。骨架是一种类似于并行设计模式的东西,具有关联的成本模型和(通常)支持它的运行时系统。骨架模型研究支持 一类具有特定“形状”的并行算法。

作为一个值得注意的例子,mapreduce(由 Google 流行)只是一种解决数据并行性的骨架,其中计算可以用 map 阶段来描述(将函数 f 应用于组成输入数据的所有元素)和减少阶段(获取所有转换后的项目并使用关联运算符 +“组合”它们)。

我发现并行结构化编程的想法在理论上和实践上都很有用,所以我建议看一看它。

关于多线程的一句话:由于骨架解决了大规模的并行性,通常它们是在分布式内存而不是共享内存中实现的。英特尔开发了一种工具,TBB ,它解决多线程问题并(部分)遵循并行结构化编程框架。它是一个 C++ 库,因此您可以直接在您的项目中使用它。

关于c++ - 是否曾在大型多线程 C++ 程序中使用过通信顺序进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2215961/

相关文章:

c++ - 我在编写一个控制台应用程序来创建一个简单的程序来解决退休金的数学方程式时遇到问题

c++ - 如何在 rc 文件中设置对话框代码页

c++ - 我如何声明一个放在 main 之后的类模板?

c - 无法在 Windows 中包含 pthread.h

java - JMeter自定义采样器同步

multithreading - template <typename>不能推断出指针类型吗?

c++ - 为什么我的 Makefile 没有创建可执行文件?

java - Android USB 附件模式无法使用 libusb 与主机 PC 读取/写入

ios - 如何停止 NSTimer?

C: 多个 pthread 期间 fgets 错误