At Mon, 15 Mar 2021 13:38:46 -0700 (PDT), Greg Rosenblatt wrote:
> Is there a corresponding event for a logical conjunction (I was looking for
> something like `all-evt` or `every-evt`), which requires that all of its
> members be ready for synchronization at the same time?
No. (Although `replavce-evt` is a weak kind of "and", it's not what
you're looking for.)
> If not, is there a fundamental barrier to its implementation with the
> ConcurrentML approach?
Yes, at least in the sense that it's not possible to implement N-way
rendezvous given only CML's rendezvous.
So, N-way rendezvous would have to be implemented in the core. I'm
certain that some languages have implemented that, but I have forgotten
the examples.
> Related to this, I've been reading "Kill-Safe Synchronization Abstractions"
> (
https://www.cs.utah.edu/plt/publications/pldi04-ff.pdf), and found it
> notable that the swap channel couldn't be implemented in a way that was
> both kill-safe and break-safe (not ruining `sync/enable-break`'s
> exclusive-or guarantee). I'm wondering if both forms of safety could be
> achieved by using a hypothetical `all-evt` that behaves as I've described.
Probably so. The citation of [17] in that part of the paper is meant to
allude to the CML-style rendezvous versus N-way rendezvous constraint.
Matthew