CQS: A Formally-Verified Framework for Fair and Abortable Synchronization
Nikita Koval, Dmitry Khalanskiy, Dan Alistarh

TL;DR
This paper presents CQS, a formally verified framework for implementing fair, abortable synchronization primitives that improve upon existing Java abstractions, with proven correctness and practical efficiency.
Contribution
The paper introduces CQS, a novel framework enabling the correct and efficient implementation of fair, abortable synchronization primitives with formal proofs of correctness.
Findings
CQS supports a wide range of synchronization primitives.
Formal proofs of correctness are provided for the algorithms.
Implementation on JVM improves Java's AbstractQueuedSynchronizer.
Abstract
Writing concurrent code that is both correct and efficient is notoriously difficult. Thus, programmers often prefer to use synchronization abstractions, which render code simpler and easier to reason about. Despite a wealth of work on this topic, there is still a gap between the rich semantics provided by synchronization abstractions in modern programming languages -- specifically, \emph{fair} FIFO ordering of synchronization requests and support for \emph{abortable} operations -- and frameworks for implementing it correctly and efficiently. Supporting such semantics is critical given the rising popularity of constructs for asynchronous programming, such as coroutines, which abort frequently and are cheaper to suspend and resume compared to native threads. This paper introduces a new framework called \texttt{CancellableQueueSynchronizer} (CQS), which enables simple yet efficient…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Parallel Computing and Optimization Techniques · Logic, programming, and type systems
