
Alexander Terekhov wrote: [...]
That (preliminary) notice doesn't really say what's the problem with respect to "dangling" reservation. (Context switch of course must clear reservation; everybody and his dog knows that.)
Just to clarify. Think of simple unconditional increments on UP (count is zero initially). Thread A: <load-reserved> <add 1> [preemptive context switch] Thread B: <load-reserved> <add 1> <store-conditional> // count = 1 . . [another increment, count = 2] . . . [begin yet another increment] <load-reserved> [preemptive context switch] Thread A: <store-conditional> // count = 1 And you've just lost one billion dollars. In any preemptive OS context switch must always clear reservation to ensure that you never get into this sort of trouble. regards, alexander.