What’s the difference between
-
a[] = trueand Threads.atomic_xchg!(a, true)
for a = Threads.Atomic{Bool}(false)?
What’s the difference between
a[] = true andThreads.atomic_xchg!(a, true)for a = Threads.Atomic{Bool}(false)?
I think the important difference is the return value. In the first case, the return value will be true; assignment just returns the value assigned.
In the second case, assuming a single threaded program, the value will be false since atomic_xchg! returns the old value of the reference. In a multi-threaded program where several threads execute atomic_xchg!, only one (the first to get there) will see false, the others will all see true since they see the result of the first atomic_xchg!.