#define ONCELOCK \ for(static volatile bool o_b_; !ReadWithBarrier(o_b_);) \ for(static StaticMutex o_ss_; !o_b_;) \ for(Mutex::Lock o_ss_lock__(o_ss_); !o_b_; BarrierWrite(o_b_, true))
{ static volatile bool o_b_; if(!ReadWithBarrier(o_b_)) { static StaticMutex mutex; mutex.Enter(); { do_the_initialization - the statement 'body' BarrierWrite(o_b_); } } }
Report message to a moderator