Is this atomic code correct?

BCS none at
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;
		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