다음을 통해 공유


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 입니다.

설명

이 원자 비교 및 교환 작동은 Exp 의 *this 로 저장된 값을 비교합니다. 값이 같은 경우, 동작은 read-modify-write 동작을 사용하고 Order1로 지정된 메모리 순서 제약 조건을 적용하는 Val 의 *this 로 저장된 값을 대체합니다. 값이 같지 않으면, 동작은 Order2 로 지정된 메모리 순서 제약 조건을 적용하고 Exp 으로 대체한 *this 로 저장된 값을 값을 사용합니다.

이 Order1 의 값을 기반하는 암시적으로 Order2 을 사용하는 두번째 memory_order 를 가지지 않은 것을 재정의합니다. 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_strong_explicit 함수

atomic 구조체

<atomic>

memory_order