Synthesizing fine-grained synchronization protocols for implicit monitors

  title={Synthesizing fine-grained synchronization protocols for implicit monitors},
  author={Kostas Ferles and Ben Sepanski and Rahul Krishnan and James Bornholt and Isil Dillig},
  journal={Proceedings of the ACM on Programming Languages},
  pages={1 - 26}
A monitor is a widely-used concurrent programming abstraction that encapsulates all shared state between threads. Monitors can be classified as being either implicit or explicit depending on the primitives they provide. Implicit monitors are much easier to program but typically not as efficient. To address this gap, there has been recent research on automatically synthesizing explicit-signal monitors from an implicit specification, but prior work does not exploit all paralellization… 



Synthesizing Fine-Grained Synchronization Protocols for Implicit Monitors (Extended Version)

  • (2022). arXiv:2203.00783 [Computer Science]
  • 2022

Symbolic reasoning for automatic signal placement

A new solution based on static analysis for automatically generating a performant explicit-Signal program from its corresponding implicit-signal implementation, to minimize the number of required signals and unnecessary context switches, while guaranteeing semantic equivalence between the source and target programs.

James Bornholt, and Isil Dillig. 2022. Synthesizing Fine-Grained Synchronization Protocols for Implicit Monitors (Extended Version)

  • Computer Science
  • 2022

A safe approximate algorithm for interprocedural aliasing

During execution, when two or more names exist for the same location at some program point, we call them aliases. In a language which allows arbitrary pointers, the problem of determining aliases a...

Towards a theory of parallel programming

Programming constructs for parallelism, including means for expressing resource constraints and synchorinzation, are discussed and formally defined.

Operating System Principles

Tools and Algorithms for the Construction and Analysis of Systems

This paper presents a meta-analyses of parallel SAT simplification on GPU architectures and its applications in reinforcement learning, artificial intelligence, and bioinformatics.

Soot: a Java bytecode optimization framework

This paper presents Soot, a framework for optimizing Java* bytecode. The framework is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a…

SeaHorn: A Framework for Verifying C Programs (Competition Contribution)

The distinguishing feature of seahorn is its modular design that separates how program semantics is represented from the verification engine.