2018
DOI: 10.1007/978-3-319-89884-1_15
|View full text |Cite
|
Sign up to set email alerts
|

Deadlock-Free Monitors

Abstract: Monitors constitute one of the common techniques to synchronize threads in multithreaded programs, where calling a wait command on a condition variable suspends the caller thread and notifying a condition variable causes the threads waiting for that condition variable to resume their execution. One potential problem with these programs is that a waiting thread might be suspended forever leading to deadlock, a state where each thread of the program is waiting for a condition variable or a lock. In this paper, a… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
19
0

Year Published

2018
2018
2021
2021

Publication Types

Select...
4
1
1

Relationship

4
2

Authors

Journals

citations
Cited by 12 publications
(19 citation statements)
references
References 21 publications
0
19
0
Order By: Relevance
“…Hamin et al [6,7,9] introduced a modular approach for verifying absence of deadlock in programs synchronized using condition variables (CVs), where executing a command wait(v, l) on a CV v, which is associated with a lock l, releases l and suspends the running thread, and executing commands notify (v) or notifyAll (v) wake up one or all thread(s) waiting for CV v at which point they will try to reacquire l. This approach ensures absence of deadlock by making sure that for any CV v for which a thread is waiting there is a thread obliged to fulfill an obligation for v which only waits for waitable objects whose levels are lower than the level of v. In this approach when a thread acquires a lock l, the total number of waiting threads, and the total number of obligations of any CV v associated with l, denoted by Wt (v) and Ot(v) respectively, can be mentioned in the proof of that thread. Wt and Ot are actually two bags 4 which keep track of the total number of the waiting threads and the total number of the obligations of the condition variables associated with a lock, respectively.…”
Section: Deadlock-free Monitorsmentioning
confidence: 99%
See 3 more Smart Citations
“…Hamin et al [6,7,9] introduced a modular approach for verifying absence of deadlock in programs synchronized using condition variables (CVs), where executing a command wait(v, l) on a CV v, which is associated with a lock l, releases l and suspends the running thread, and executing commands notify (v) or notifyAll (v) wake up one or all thread(s) waiting for CV v at which point they will try to reacquire l. This approach ensures absence of deadlock by making sure that for any CV v for which a thread is waiting there is a thread obliged to fulfill an obligation for v which only waits for waitable objects whose levels are lower than the level of v. In this approach when a thread acquires a lock l, the total number of waiting threads, and the total number of obligations of any CV v associated with l, denoted by Wt (v) and Ot(v) respectively, can be mentioned in the proof of that thread. Wt and Ot are actually two bags 4 which keep track of the total number of the waiting threads and the total number of the obligations of the condition variables associated with a lock, respectively.…”
Section: Deadlock-free Monitorsmentioning
confidence: 99%
“…To verify deadlock-freedom of the program shown in Figure 1 it is necessary to transfer an obligation of v from the thread running leave to the thread whose ticket number equals to the new value of active, if there exists such a thread. However, it is impossible to verify deadlock-freedom of this program using the proof system introduced by Hamin et al [6,9] due to the following reasons: 1) this approach does not allow obligations to be transferred through broadcasts, because it is not clear which of the waiting threads should receive the transferred obligations, and 2) (even if such a transfer is possible) this approach allows obligations to be transferred through notifications only if there is a thread waiting for that condition variable (0 < Wt(v)), because it ensures that a thread will immediately receive the transferred obligations. Note that in this program there might be a situation where the thread whose ticket number equals the new value of active is not waiting for v but has been already awoken (by a broadcast issued beforehand) and is waiting to reacquire the lock associated with v.…”
Section: Publishable Obligationsmentioning
confidence: 99%
See 2 more Smart Citations
“…We start by introducing the programming language in Section 2 and continue in Section 3 with presenting the separation logic and so-called obligations and credits [3,4,11,12], which we use to reason about termination of busywaiting. In Section 4 we present our verification approach in the form of a set of proof rules and illustrate their application.…”
Section: Introductionmentioning
confidence: 99%