|
|
|
If ( E , D ) is in execution .[[HostSynchronizesWith]], E and D are in ( execution ). There is no cycle in the union of execution .[[HostSynchronizesWith]] and execution .[[AgentOrder]]. NOTE 1 NOTE 2 For a
execution , execution .[[SynchronizesWith]] is the least on events that satisfies the following. For each pair ( R , W ) in execution .[[ReadsFrom]], ( W , R ) is in execution .[[SynchronizesWith]] if R .[[Order]] is SeqCst , W .[[Order]] is SeqCst , and R and W have equal ranges. For each element eventsRecord of execution .[[EventsRecords]], the following is true. For each pair ( S , Sw ) in eventsRecord .[[AgentSynchronizesWith]], ( S , Sw ) is in execution . [[SynchronizesWith]]. For each pair ( E , D ) in execution .[[HostSynchronizesWith]], ( E , D ) is in execution .[[SynchronizesWith]]. NOTE 1 NOTE 2 NOTE 3 NOTE 4 For a
execution , execution .[[HappensBefore]] is the least following. For each pair ( E , D ) in execution .[[AgentOrder]], ( E , D ) is in execution .[[HappensBefore]]. For each pair ( E , D ) in execution .[[SynchronizesWith]], ( E , D ) is in execution .[[HappensBefore]]. For each pair ( E , D ( execution ), ( E , D ) is in execution .[[HappensBefore]] if E . [[Order]] is Init and E and D have overlapping ranges. For each pair ( E , D ( execution ), ( E , D ) is in execution .[[HappensBefore]] if there is an event F such that the pairs ( E , F ) and ( F , D ) are in execution .[[HappensBefore]]. For two -specific events E and D , E host-synchronizes-with D implies E
D . The host-synchronizes-with relation allows the to provide additional synchronization mechanisms, such as postMessage postMessage between HTML workers. Owing to convention, write events synchronizes-with read events, instead of read events Init events do not participate in synchronizes-with, and are instead constrained directly by . Not all SeqCst events related by are related by synchronizes-with. Only events that also have equal ranges are related by synchronizes-with. R and W such that W synchronizes-with R , R may writes than W . 29.6.5 synchronizes-with 29.6.6 happens-before 806 |