Поделиться через


Метод atomic::compare_exchange_weak

Выполняет операцию слабое атомарное сравнивает и обмена на *this.

bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) _NOEXCEPT;

Параметры

  • Exp
    Значение типа Ty.

  • Value
    Значение типа Ty.

  • Order1
    Первый аргумент memory_order.

  • Order2
    Второй аргумент memory_order.

Возвращаемое значение

bool, показывающее результат сравнения значения.

Заметки

Эта операция атомарный сравнивать и обмена сравнивает значение, которая хранится в *this с Exp. Если значения равны, то операция заменяет значение, которое хранится в *this с Val с помощью операции read-modify-write и применения ограничений порядка памяти, определенные Order1. Если значения не равны, то операция использует значение, которое хранится в *this заменять Exp и применяет ограничения порядка памяти, определенные Order2.

Слабое атомарное сравнивает и выполняет операции обмена и если сравнение двух значений. Если значения не равны, не гарантируется выполнение операции обмена.

Перегруженные версии, не имеющие использовать memory_order секунды неявное Order2, основанный на значение Order1. Если Order1 имеет значение memory_order_acq_rel, Order2 имеет значение memory_order_acquire. Если Order1 имеет значение memory_order_release, Order2 имеет значение memory_order_relaxed. Во всех остальных случаях Order2 равно Order1.

Для перегруженных, которые принимают значение 2 параметра memory_order, Order2 не должно быть memory_order_release или memory_order_acq_rel и не должно быть меньше значения сильне Order1.

Требования

Заголовок: atomic

Пространство имен: std

См. также

Ссылки

Функция atomic_compare_exchange_weak_explicit

Структура atomic

<atomic>

memory_order