Responsive Parallelism with Synchronization
Stefan K. Muller, Kyle Singer, Devyn Terra Keeney, Andrew Neth, Kunal Agrawal, I-Ting Angelina Lee, Umut A. Acar
Abstract
Many concurrent programs assign priorities to threads to improve responsiveness. When used in conjunction with synchronization mechanisms such as mutexes and condition variables, however, priorities can lead to priority inversions, in which high-priority threads are delayed by low-priority ones. Priority inversions in the use of mutexes are easily handled using dynamic techniques such as priority inheritance, but priority inversions in the use of condition variables are not well-studied and dynamic techniques are not suitable.
In this work, we use a combination of static and dynamic techniques to prevent priority inversion in code that uses mutexes and condition variables. A type system ensures that condition variables are used safely, even while dynamic techniques change thread priorities at runtime to eliminate priority inversions in the use of mutexes. We prove the soundness of our system, using a model of priority inversions based on cost models for parallel programs. To show that the type system is practical to implement, we encode it within the type systems of Rust and C++, and show that the restrictions are not overly burdensome by writing sizeable case studies using these encodings, including porting the Memcached object server to use our C++ implementation.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext c65ef915-6ce1-4f17-95a1-609375ed1aaeCited by top-tier papers2
- Automatic Parallelism ManagementSam Westrick, Matthew Fluet, Mike Rainey, Umut A. AcarPOPL 2024 · 7 citations
- Disentanglement with Futures, State, and InteractionJatin Arora, Stefan K. Muller, Umut A. AcarPOPL 2024
Builds on2
Related papers
- Responsive Parallelism with Dynamic and First-Class PrioritiesMarelle León, My Dinh, Stefan K. MullerPLDI 2026
- A Refinement Methodology for Distributed Programs in RustAurel Bílý, João C. Pereira, Peter MüllerOOPSLA 2025
- On Removing Algorithmic Priority Inversion from Mission-critical Machine Inference PipelinesShengzhong Liu, Shuochao Yao, Xinzhe Fu, Rohan Tabish et al.RTSS 2020 · 53 citations
- A Theoretical Approach to Determine the Optimal Size of a Thread Pool for Real-Time SystemsDaniel CasiniRTSS 2022 · 5 citations
- Concrat: An Automatic C-to-Rust Lock API Translator for Concurrent ProgramsJaemin Hong, Sukyoung RyuICSE 2023 · 17 citations
