可以并行代码的静态检查?

时间:2014-04-07 11:59:07

标签: concurrency static-analysis

在Hoare的Communicating Sequential Processes书(也是Wikipedia)中,在餐饮哲学家的例子结尾处,它说:

  

没有希望计算机能够探索所有这些可能性。即使对于非常简单的有限进程,也没有死锁的证据仍然是并发系统设计者的责任。

他说或暗示并发系统的静态检查是不可能的吗?

1 个答案:

答案 0 :(得分:4)

  

他说或暗示并发系统的静态检查是不可能的吗?

是和否:)

检查并发系统是不可能的,是的。 他说有时甚至不可能出现一个更简单的问题。

众所周知(可以证明)并发系统的重要属性通常是不可判定的。关于活锁的其中一个结果如下:

MGGouda,CHChow,SSLam:关于通信有限状态机网络中活锁检测的可判定性,在协议规范,测试和验证中,IV,Elsevier,1985

我不能特别提供有关CSP和死锁的参考,但它们肯定存在。来自

的引用

Mike R. Jane,Raymond J. Fawcett,Terry P. Mawby: Transputer Applications:Progress and Prospects:Transporate Engineering of Engineering的SERC / DTI计划闭幕研讨会论文集, IOS出版社,1992年1月1日

  

第二个问题是设计通信结构中无纪律的复杂性的结果。不幸的是,死锁自由不是一个可以通过语言设计得到充分保护的门徒 - 就像“暂停问题”一样,潜在死锁的检测通常是不可计算的。

[第163页,P.H Welch撰写关于奥卡姆的文章]

但是,一般不可判定性并不排除存在一类问题,可以通过构建证据或使用应用枚举和检查方法的工具来确定感兴趣的属性。

你问题中的引用是指后者。它说,当要考虑的国家数量是天文数字时,即使是枚举和检查方法在实践中也是没有希望的。