std::atomic_ref<T>:: wait
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
void
wait
(
value_type old,
std::
memory_order
order
=
std:: memory_order_seq_cst ) const noexcept ; |
(constexpr начиная с C++26) | |
Выполняет атомарные операции ожидания. Ведут себя так, как будто многократно выполняются следующие шаги:
-
Сравните
представление значения
объекта
this
-
>
load
(
order
)
с представлением значения объекта
old
.
- Если они равны, то блокируется до тех пор, пока * this не будет уведомлен с помощью notify_one() или notify_all() , или пока поток не будет разблокирован спонтанно.
- В противном случае возвращает управление.
Эти функции гарантированно возвращают управление только при изменении значения, даже если базовая реализация разблокируется ложно.
Если order не является std:: memory_order_relaxed , std:: memory_order_consume , std:: memory_order_acquire или std:: memory_order_seq_cst , поведение не определено.
Содержание |
Параметры
| old | - |
значение, которое объект
atomic_ref
больше не должен содержать
|
| order | - | ограничения порядка памяти для применения |
Примечания
Эта форма обнаружения изменений часто более эффективна, чем простое опрашивание или чистые спинлоки.
Из-за проблемы ABA , временные изменения с old на другое значение и обратно на old могут быть пропущены и не разблокировать.
Сравнение производится побитово (аналогично std::memcmp ); операторы сравнения не используются. Биты заполнения, которые никогда не участвуют в представлении значения объекта, игнорируются.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
уведомляет по крайней мере один поток, ожидающий атомарный объект
(публичная функция-член) |
|
|
уведомляет все потоки, заблокированные в ожидании атомарного объекта
(публичная функция-член) |
|
|
(C++20)
|
уведомляет поток, заблокированный в atomic_wait
(шаблон функции) |
|
(C++20)
|
уведомляет все потоки, заблокированные в atomic_wait
(шаблон функции) |