Actually I'm not sure if it was supposed to be funny or serious. I see the funny "everything-free" list, as well as can imagine that there is some action you can do not atomically (relative to other actions) that gives you synchronisation.
Anyone?
Actually I'm not sure if it was supposed to be funny or serious. I see the funny "everything-free" list, as well as can imagine that there is some action you can do not atomically (relative to other actions) that gives you synchronisation.
Anyone?
An example of mutual exclusion, without any atomic operations, taken from the book "The art of multiprocessor programming"[1] is (paraphrased) as follows:
Two threads, A and B, want to access some memory. Each thread has a flag.
When thread A wants to access the shared memory:
Set flag A
Wait for flag B to become unset
Access memory
Unset flag A
When thread B wants to access the shared memory: Set flag B
While flag A is set {
Unset flag B
Wait for flag A to become unset
Set flag B
}
Access memory
Unset flag B
Obviously this isn't a general purpose solution, but rather an easy to understand example demonstrating that atomic operations are not required.[1] http://www.amazon.com/Art-Multiprocessor-Programming-Maurice...
Once you add the appropriate memory barriers, it looks a lot more "atomic"
Well, they force in order memory access. That doesn't look terribly "atomic" to me, but I understand your point.