Skip to content

Commit c9ab553

Browse files
Relaxed data locking strategy for atomic ordering constraints
Credit to @DJMcNab for pointing out that my constraints were too tight.
1 parent 3431c21 commit c9ab553

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

rfcs/45-stageless.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ Like the atom, they are indivisible: nothing can get between them!
233233
To be fully precise, if we have system `A` that runs "atomically before" system `B` (`.add_system(a.atomically_before(b))`):
234234

235235
- `A` is strictly before `B`
236-
- the data locks (in terms of read and write accesses to the `World`) of system `A` will not be released until system `B` has completed
236+
- the "write" data locks of system `A` are relaxed to "read" data locks upon system `A`'s completion
237+
- "read" data locks of system `A` will not be released until system `B` (and all other atomic dependents) has completed
237238
- the data locks from system `A` are ignored for the purposes of checking if system `B` can run
238239
- after all, they're not actualy locked, merely reserved
239240
- competing read-locks caused by other systems will still need to complete before a data store can be mutated; the effect is to "ignore the locks of `A`", not "skip the check completely"

0 commit comments

Comments
 (0)