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 novel 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 discuss an algorithm to compute the state graph of a given Petri net start state pair. We introduce our open source software framework which implements this theory as a general purpose concurrency focused middle-ware.
翻译:在所有大型和复杂的计算机系统中都使用同步程序。 但是, 共通货币错误和系统故障( 例如: 撞车和僵局) 十分常见。 我们发现, Petri 网可以用来建模并行系统, 并提前发现和清除错误。 我们引入了一种新型的Petri 网, 配有非确定性过渡节点, 以匹配真实系统。 允许在共通货币水平上采用一种紧凑的方法来构建、 优化和验证计算机程序。 Petri 网程序也可以通过自动解决最大共通货币来优化, 最高有效线数由Petri 网的结构在实施前决定。 我们讨论一种算法, 以计算给定的Petri 网起始状态的状态图。 我们引入了我们的开放源软件框架, 将这一理论作为通用的共通货币集中的中型软件来实施。