$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2005-04-08 11:17:11
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.