История изменений
      
        Исправление
      kvpfs,
      
        (текущая версия)
      :
    
С чего это неатомарна?
Потому что тут три действия: прочитать, модифицировать и записать. Если условно:
bool b = false;
bool ab = false;
thread 1() {
  b = true;
  ab = true;
  ...
}
thread 2() {
  while (! ab) {} 
  assert(b);
  
}
assert может сработать. Про representation trap - это я зря сказал.
      
        Исходная версия
      kvpfs,
      :
    
С чего это неатомарна?
Потому что тут три действия: прочитать, модифицировать и записать. Если условно:
bool b = false;
bool ab = false;
thread 1() {
  b = true;
  ab = true;
  ...
}
thread 2() {
  while (! ab) {
     assert(b);
  }
}
assert может сработать. Про representation trap - это я зря сказал.