Hi,

Is there a way I can stop "current" from being optimized out without using "volatile"? The compiler is suggesting I replace "volatile" with "synchronized" but I don't want it synchronized?
Would a memory barrier work?

shared n = new int(value);
for (;;) {
  volatile auto current = payload; // payload is a shared variable
if (current == payload) { // just to make sure we copied a complete value from
    if (current is null) {
      if (cas(&payload, current, n)) {
        return true;
      }
    }
  }
}


Thanks!
-Rory

Reply via email to