LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Сюда нужно лок отдать, и не абы какой, а тот же самый, под которым выставляется, в моём случае, task_status

В std::atomic вообще может и не быть лока (lock-free), так что надо либо лочить отдельным локом, либо синхронизироваться на task_status, в стиле():

while (task_status.load(std::memory_order_acquire) != ready) 
{
  std::this_thread::sleep_for(INTERVAL);
}

UPD Хотя, on the second thought, может atomic тут и не подходит (если надо ждать).

Исправление KennyMinigun, :

Сюда нужно лок отдать, и не абы какой, а тот же самый, под которым выставляется, в моём случае, task_status

В std::atomic вообще может и не быть лока (lock-free), так что надо либо лочить отдельным локом, либо синхронизироваться на task_status, в стиле():

while (task_status.load(std::memory_order_acquire) != ready) 
{
  std::this_thread::sleep_for(INTERVAL);
}

Исходная версия KennyMinigun, :

Сюда нужно лок отдать, и не абы какой, а тот же самый, под которым выставляется, в моём случае, task_status

Ну в std::atomic вообще может и не быть лока (lock-free), так что надо либо лочить отдельным локом, либо синхронизироваться на task_status, в стиле():

while (task_status.load(std::memory_order_acquire) != ready) 
{
  std::this_thread::sleep_for(INTERVAL);
}