Согласно cppreference, в C ++ 20 есть wait
, notify_one
, notify_all
в std::atomic<T>
. Похоже, они делают std::atomic<T>
пригодным для использования как futex .
Я спрашиваю, почему wait
принимает std :: memory_order в качестве параметра. Поскольку мне всегда нужно проверять, не является ли пробуждение от ожидания ложным, я укажу порядок памяти в соответствующей загрузке:
std::atomic<bool> x;
while (x.load(std::memory_order_acquire) == false)
{
x.wait(false, std::memory_order_acquire);
}
Или я должен указать std::memory_order_relaxed
для ожидания? Есть ли сценарий ios с wait
, за которым не следует load
?