Concurrent programming is used in all large and complex computer systems. However, concurrency errors and system failures (ex: crashes and deadlocks) are common. We find that Petri nets can be used to model concurrent systems and find and remove errors ahead of time. We introduce a generalization of Petri nets with nondeterministic transition nodes to match real systems. These allow for a compact way to construct, optimize, and prove computer programs at the concurrency level. Petri net programs can also be optimized by automatically solving for maximal concurrency, where the maximum number of valid threads is determined by the structure of the Petri net prior to execution. We provide pseudocode to compute the state graph of a given Petri net start state pair. There is an open source repository of code1 which aims to implement this theory as a general purpose concurrency focused middle-ware.
翻译:在所有大型和复杂的计算机系统中都使用同步程序。 但是, 共通货币错误和系统故障( 例如: 崩溃和僵局)是常见的。 我们发现, Petri 网可以用来建模同时的系统, 并提前发现和清除错误。 我们引入了Petri 网的通用化, 与非确定性过渡节点匹配真正的系统。 允许在共通货币水平上采用构建、 优化和验证计算机程序的紧凑方式。 Petri 网程序也可以通过自动解决最大共通货币来优化, 最高有效线数由执行前的Petri 网结构决定。 我们提供伪代码来计算给定的Petri 网启动状态对的状态图 。 有一个代码1 的开放源库, 目的是将这一理论作为通用的以货币为重点的中间软件来实施 。