noexcept;
template
BaseType atomic_exchange_explicit(
atomic
BaseType new_value, memory_order order) noexcept;
Результат
return p->exchange(new_value, order);
STD::ATOMIC::COMPARE_EXCHANGE_STRONG
, ФУНКЦИЯ-ЧЛЕН
Атомарно сравнивает значение с ожидаемым и, если они равны, сохраняет новое значение. Если значения не равны, то заменяет ожидаемое значение прочитанным.
bool compare_exchange_strong(
BaseType& expected, BaseType new_value,
memory_order order = std::memory_order_seq_cst)
volatile noexcept;
bool compare_exchange_strong(
BaseType& expected, BaseType new_value,
memory_order order = std::memory_order_seq_cst) noexcept;
bool compare_exchange_strong(
BaseType& expected, BaseType new_value,
memory_order success_order, memory_order failure_order)
volatile noexcept;
bool compare_exchange_strong(
BaseType& expected, BaseType new_value,
memory_order success_order,
memory_order failure_order) noexcept;
Параметр failure_order
не должен быть равен std::memory_order_release
или std::memory_order_acq_rel
.
Атомарно сравнивает expected
со значением, хранящимся в *this
, применяя побитовое сравнение, и сохраняет new_value
в *this
, если значения равны. В противном случае записывает в expected
прочитанное значение.
true
, если значение, хранящееся в *this
, совпало с expected
. В противном случае false
.
Нет.
Примечание. Этот перегруженный вариант функции с тремя параметрами эквивалентен перегруженному варианту с четырьмя параметрами, где success_order == order
и failure_order == order
, с тем отличием, что если order
равно std::memory_order_acq_rel
, то failure_order
равно std::memory_order_acquire
, а если order
равно std::memory_order_release
, то failure_order
равно std::memory_order_relaxed
.
Примечание. Если результат равен true
, то это атомарная операция чтения-модификации-записи для ячейки памяти, содержащей *this
, с упорядочением доступа к памяти success_order
; в противном случае это атомарная операция загрузки для ячейки памяти, содержащей *this
, с упорядочением доступа к памяти failure_order
.
STD::ATOMIC_COMPARE_EXCHANGE_STRONG
, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно сравнивает значение с ожидаемым и, если они равны, сохраняет новое значение. Если значения не равны, то заменяет ожидаемое значение прочитанным.
template
bool atomic_compare_exchange_strong(
volatile atomic
BaseType * old_value, BaseType new_value) noexcept;
template
bool atomic_compare_exchange_strong(
atomic
BaseType * old_value, BaseType new_value) noexcept;
return p->compare_exchange_strong(*old_value, new_value);
STD::ATOMIC_COMPARE_EXCHANGE_STRONG_EXPLICIT
, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно сравнивает значение с ожидаемым и, если они равны, сохраняет новое значение. Если значения не равны, то заменяет ожидаемое значение прочитанным.
template
bool atomic_compare_exchange_strong_explicit(
volatile atomic