简体   繁体   中英

How to check what progress guarantee a concurrent program follows?

I was working on some concurrent programs for the past few weeks and was wondering if there is any tool that can automatically detect what type of progress condition its operations guarantees, that is whether it is wait-free, lock-free or obstruction-free.

I searched online and didn't find any such tool.

Can one tell how to deduce progress condition of a program?

Assume that I have a program called a wait-freedom decider that can read a concurrent program describing a data structure and detect whether it is wait free, ie "one that guarantees that any process can complete any operation in a finite number of steps" ala Herlihy's "Wait-Free Synchronization" . Then, given a single-threaded program P , create a program that we will feed into the wait-freedom decider:

class DataStructure:
    def operation(this):
        P
        pass

Now DataStructure.operation completes in a finite number of steps if and only if P halts.

This would solve the halting problem. That's impossible, so, by contradiction, we must not be able to create a wait-freedom decider.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM