Метод 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