我目前正在编写一个大型多线程 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/