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


метод atomic::compare_exchange_strong

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

bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_strong(
   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.

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

Требования

Атомарный заголовок:

Std пространство имен:

См. также

Ссылки

atomic_compare_exchange_strong_explicit функция

атомарное строение

<atomic>

memory_order