如何检查并发程序遵循的进度是什么?

时间:2016-05-13 14:46:17

标签: c++ concurrency lock-free wait-free

过去几周我正在研究一些并发程序,并且想知道是否有任何工具可以自动检测其操作保证的进展条件,即是否等待,无锁或阻塞-自由。

我在网上搜索过,没找到任何这样的工具。

可以告诉我们如何推断出一个程序的进度条件吗?

1 个答案:

答案 0 :(得分:3)

假设我有一个名为 wait-freedom decider 的程序,它可以读取描述数据结构的并发程序并检测它是否等待,即“保证任何进程都可以完成的程序”任何有限步骤的操作“ala Herlihy's "Wait-Free Synchronization"。然后,给定单线程程序www,创建一个程序,我们将提供给等待自由决策程序:

P

当且仅当class DataStructure: def operation(this): P pass 停止时,现在DataStructure.operation以有限的步数完成。

这将解决暂停问题。这是不可能的,因此,矛盾的是,我们必须无法创造一个等待自由的决定者。