Is this atomic code correct?
BCS
none at anon.com
Tue Mar 17 13:49:54 PDT 2009
I find my self in need of some thread safe, lock free code to update a value
by way of a self referential expression
x = min(x,y);
Being the abstraction addict I am, I went for the general solution and came
up with this:
void AtomicEvalAssign(T)(ref T to, lazy T from)
{
T old;
do
{
old = atomicLoad(to);
} while(!atomicStoreIf(to, from(), old));
}
AtomicEvalAssign(x, min(x,y));
My question is; will that work or might the lazy arg not refetch the value?
More information about the Digitalmars-d-learn
mailing list