다음을 통해 공유


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 인수.

반환 값

A 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 매개 변수, 값 Order2 되지 않아야 memory_order_release 또는 memory_order_acq_rel, 값 보다 더 강력한 해야 Order1.

요구 사항

헤더: 원자

네임 스페이스: std

참고 항목

참조

atomic_compare_exchange_strong_explicit 함수

원자 구조

<atomic>

memory_order