A set of synchronization edges, S, is sufficient if it is the minimal set such that the transitive closure of S with the program order determines all of the happens-before edges in the execution. This set is unique.
Why is the sufficient set unique?
How can we determine which synchronization edges are in the sufficient set and which aren't?
I found the answers.
Why is the sufficient set unique?
According to the JLS
happens-beforeis a strict partial order:That means
happens-beforecan be represented as a directed acyclic graph (DAG):According to the wiki:
This "transitive reduction" is "the sufficient minimal set" in the question.
How can we determine which synchronization edges are in the sufficient set and which aren't?
From the wiki: