Implementation of synchronization

I have read the Essence of Software and all the information that I could find on the website regarding synchronizations, but was still unclear on some of the semmantic details of synchronizations. For example, is the first statement the only one used as a guard for the synchronization transaction? Do you have any recommendations for implementing synchronizations? For instance, would a Conservative Two Phase Locking Protocol need to be implemented in a Mediator containing all synchronized concept processes/threads?

Hi @Bcur : so sorry to have missed this post. This is a question we’ve been actively working on. My student Eagon Meng has developed a DSL for syncs that has a different semantics from my book’s approach. It’s a big improvement because it gets rid of the need for transactions, and also allows much finer granularity. The details are explained in a paper we’re about to present at SPLASH Onward. Eagon has also developed a newer version (since that paper) that implements the DSL as a lightweight Typescript library, which we’re going to be using in our class this fall.