在SICP 3.4.2 中存在不同进程中事件顺序的问题。
假设我们有两个进程,一个具有三个有序事件 (a,b,c),一个具有三个有序事件 (x,y,z)。如果两个进程同时运行,并且对它们的执行如何交错没有限制,那么事件有 20 种不同的可能排序,这些排序与两个进程的单独排序一致。
作为设计这个系统的程序员,我们必须考虑这 20 个排序中每一个的影响,并检查每个行为是否可以接受。随着进程和事件数量的增加,这种方法很快变得笨拙。
是否有任何工具/最佳实践可以帮助程序员确保涵盖每个逻辑上不同的情况?
如果程序员可以在它们之间定义一组事件和约束,并且该工具将返回所有有效的事件顺序(识别和分组类似的循环模式),那就太好了。
给定可能的事件流列表,程序员将能够添加/删除/修改约束。
这个问题对我来说很重要,因为我遇到的最多的错误与一些竞争条件或一些未处理的情况有关。
我真的不想使用具有某些高级类型系统的特定语言,我宁愿拥有一种独立于技术/语言的解决方案,它充当某种助手 - 设计和记录系统:及其事件、约束(和状态)。
这对我来说将是圣杯。
我正在寻找这些主题的解决方案:形式方法、形式验证、序言(因为详尽的搜索和逻辑)、并发性、依赖类型、基于事件的编程、多种类型的测试、契约式设计、圈复杂度;但他们都没有给我答案。此外,深入研究类型理论似乎是一种矫枉过正。