다음을 통해 공유


<atomic> 함수

atomic_compare_exchange_strong
atomic_compare_exchange_strong_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_weak_explicit
atomic_exchange
atomic_exchange_explicit
atomic_fetch_add
atomic_fetch_add_explicit
atomic_fetch_and
atomic_fetch_and_explicit
atomic_fetch_or
atomic_fetch_or_explicit
atomic_fetch_sub
atomic_fetch_sub_explicit
atomic_fetch_xor
atomic_fetch_xor_explicit
atomic_flag_clear
atomic_flag_clear_explicit
atomic_flag_test_and_set
atomic_flag_test_and_set_explicit
atomic_init
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_signal_fence
atomic_store
atomic_store_explicit
atomic_thread_fence
kill_dependency

atomic_compare_exchange_strong

원자 비교 및 교환 작업을 수행합니다.

template <class Ty>
inline bool atomic_compare_exchange_strong(
    volatile atomic<Ty>* Atom,
    Ty* Exp,
    Value) noexcept;

template <class Ty>
inline bool atomic_compare_exchange_strong(
    atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Exp
Ty 형식의 값에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Return Value

true 값이 같으면 이고, 그렇지 않으면 false.입니다.

설명

이 메서드는 암시적 memory_order.memory_order_seq_cst 인수를 사용하여 원자성 비교 및 교환 작업을 수행합니다. 자세한 내용은 atomic_compare_exchange_strong_explicit를 참조하세요.

atomic_compare_exchange_strong_explicit

작업을 수행합니다 atomic compare and exchange .

template <class T>
inline bool atomic_compare_exchange_strong_explicit(
    volatile atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value,
    memory_order Order1,
    memory_order Order2) noexcept;

template <class Ty>
inline bool atomic_compare_exchange_strong_explicit(
    atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value,
    memory_order Order1,
    memory_order Order2) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Exp
Ty 형식의 값에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Order1
첫 번째 memory_order 인수입니다.

Order2
두 번째 memory_order 인수입니다. Order2의 값은 memory_order_release 또는 memory_order_acq_rel일 수 없으며, Order1의 값보다 강력할 수 없습니다.

Return Value

true 값이 같으면 이고, 그렇지 않으면 false.입니다.

설명

atomic compare and exchange operation 값은 가리키는 개체 Atom 에 저장된 값과 가리키는 값을 비교합니다 Exp. 값이 같으면 가리키는 Atom 개체에 저장된 값은 읽기-수정-쓰기 작업을 사용하고 지정된 메모리 순서 제약 조건을 적용하여 바뀝 Value 니다 Order1. 값이 같지 않으면 작업이 가리키는 Exp 값을 가리키는 개체 Atom 에 저장된 값으로 바꾸고 지정된 메모리 순서 제약 조건을 적용합니다 Order2.

atomic_compare_exchange_weak

약한 원자 비교 및 교환 작업을 수행합니다.

template <class Ty>
inline bool atomic_compare_exchange_strong(
    volatile atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value) noexcept;

template <class Ty>
inline bool atomic_compare_exchange_strong(
    atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Exp
Ty 형식의 값에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Return Value

true 값이 같으면 이고, 그렇지 않으면 false.입니다.

설명

이 메서드는 암시적 memory_order.memory_order_seq_cst 인수가 있는 약한 원자 비교 및 교환 작업을 수행합니다. 자세한 내용은 atomic_compare_exchange_weak_explicit를 참조하세요.

atomic_compare_exchange_weak_explicit

약한 원자 비교 및 교환 작업을 수행합니다.

template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
    volatile atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value,
    memory_order Order1,
    memory_order Order2) noexcept;

template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
    atomic<Ty>* Atom,
    Ty* Exp,
    Ty Value,
    memory_order Order1,
    memory_order Order2) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Exp
Ty 형식의 값에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Order1
첫 번째 memory_order 인수입니다.

Order2
두 번째 memory_order 인수입니다. Order2의 값은 memory_order_release 또는 memory_order_acq_rel일 수 없으며, Order1의 값보다 강력할 수 없습니다.

Return Value

true 값이 같으면 이고, 그렇지 않으면 false.입니다.

설명

예상 값과 현재 값이 같지 않은 경우 새 값을 저장하지 않는다는 보장의 atomic compare and exchange operation 강력하고 약한 맛입니다. 강력한 맛은 예상 값과 현재 값이 같으면 새 값을 저장합니다. 약한 맛은 때때로 반환 false 하고 현재 및 예상 값이 같은 경우에도 새 값을 저장하지 않을 수 있습니다. 즉, 함수가 반환 false되지만 나중에 예상 값을 검사하면 변경되지 않았음을 알 수 있으므로 동일하게 비교해야 합니다.

atomic_exchange

Atom의 저장된 값을 바꾸기 위해 Value를 사용합니다.

template <class T>
inline Ty atomic_exchange(volatile atomic<Ty>* _Atom, Ty Value) noexcept;

template <class Ty>
inline T atomic_exchange(atomic<Ty>* Atom, Ty Value) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Return Value

교환하기 전 Atom에 저장된 값입니다.

설명

이 함수는 atomic_exchange read-modify-write 작업을 수행하여 저장 Atom Value되는 값을 다음을 사용하여 memory_order.memory_order_seq_cst교환합니다.

atomic_exchange_explicit

Atom의 저장된 값을 Value와 바꿉니다.

template <class Ty>
inline Ty atomic_exchange_explicit(
    volatile atomic<Ty>* Atom,
    Ty Value,
    memory_order Order) noexcept;

template <class Ty>
inline Ty atomic_exchange_explicit(
    atomic<Ty>* Atom,
    Ty Value,
    memory_order Order) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Order
memory_order.

Return Value

교환하기 전 Atom에 저장된 값입니다.

설명

이 함수는 atomic_exchange_explicit 읽기-수정-쓰기 작업을 수행하여 지정된 메모리 제약 조건 내에서 저장된 Atom Value값을 교환합니다 Order.

atomic_fetch_add

값을 atomic 개체에 저장된 기존의 값에 더합니다.

template <class T>
T* atomic_fetch_add(volatile atomic<T*>* Atom, ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_add(atomic<T*>* Atom, ptrdiff_t Value) noexcept;

매개 변수

Atom
T 형식에 대한 포인터를 저장하는 atomic 개체에 대한 포인터입니다.

Value
ptrdiff_t 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 포인터의 값입니다.

설명

이 함수는 atomic_fetch_add 읽기-수정-쓰기 작업을 수행하여 제약 조건을 사용하여 memory_order.memory_order_seq_cst 저장된 값에 Atom원자성으로 추가 Value 합니다.

원자성 형식이 atomic_address인 경우, Value의 형식은 ptrdiff_t이고 연산은 저장된 포인터를 char *로 취급합니다.

이 연산은 또한 정수 형식에 대해 오버로드됩니다.

integral atomic_fetch_add(volatile atomic-integral* Atom, integral Value) noexcept;

integral atomic_fetch_add(atomic-integral* Atom, integral Value) noexcept;

atomic_fetch_add_explicit

값을 atomic 개체에 저장된 기존의 값에 더합니다.

template <class T>
T* atomic_fetch_add_explicit(
    volatile atomic<T*>* Atom,
    ptrdiff_t Value,
    memory_order Order) noexcept;

template <class T>
T* atomic_fetch_add_explicit(
    atomic<T*>* Atom,
    ptrdiff_t Value,
    memory_order Order) noexcept;

매개 변수

Atom
T 형식에 대한 포인터를 저장하는 atomic 개체에 대한 포인터입니다.

Value
ptrdiff_t 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 포인터의 값입니다.

설명

이 함수는 atomic_fetch_add_explicit 읽기-수정-쓰기 작업을 수행하여 지정된 제약 조건 내에서 memory_order 저장된 값에 Atom원자성으로 추가 Value 합니다Order.

원자성 형식이 atomic_address인 경우, Value의 형식은 ptrdiff_t이고 연산은 저장된 포인터를 char *로 취급합니다.

이 연산은 또한 정수 형식에 대해 오버로드됩니다.

integral atomic_fetch_add_explicit(
    volatile atomic-integral* Atom,
    integral Value,
    memory_order Order) noexcept;

integral atomic_fetch_add_explicit(
    atomic-integral* Atom,
    integral Value,
    memory_order Order) noexcept;

atomic_fetch_and

atomic 개체에 저장된 기존 값 및 특정 값에 대해 비트 &를 수행합니다.

template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_and 읽기-수정-쓰기 작업을 수행하여 저장된 값을 Atom 비트 Value & 단위로 바꾸고 제약 조건을 사용하여 memory_order.memory_order_seq_cst 저장된 Atom현재 값으로 바꿉니다.

atomic_fetch_and_explicit

atomic 개체에 저장된 기존 값 및 특정 값의 비트 &를 수행합니다.

template <class T>
inline T atomic_fetch_and_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

template <class T>
inline T atomic_fetch_and_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Order
memory_order.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_and_explicit 읽기-수정-쓰기 작업을 수행하여 저장된 값을 Atom 지정된 메모리 제약 조건 내에서 비트 & Value 단위 및 저장된 Atom현재 값으로 Order바꿉니다.

atomic_fetch_or

atomic 개체에 저장된 기존 값 및 특정 값에 대해 비트 or를 수행합니다.

template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_or 읽기-수정-쓰기 작업을 수행하여 저장된 값을 Atom 비트 Value or 단위로 바꾸고 현재 값은 Atom다음을 사용합니다memory_order.memory_order_seq_cst.

atomic_fetch_or_explicit

atomic 개체에 저장된 기존 값 및 특정 값에 대해 비트 or를 수행합니다.

template <class T>
inline T atomic_fetch_or_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

template <class T>
inline T atomic_fetch_or_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Order
memory_order.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_or_explicit 읽기-수정-쓰기 연산을 수행하여 저장된 값을 Atom 비트 or Value 단위로 바꾸고, 현재 값은 지정된 제약 조건 Order내에서 memory_order 저장Atom됩니다.

atomic_fetch_sub

값을 atomic 개체에 저장된 기존의 값에서 뺍니다.

template <class T>
T* atomic_fetch_sub(
    volatile atomic<T*>* Atom,
    ptrdiff_t Value) noexcept;

template <class T>
T* atomic_fetch_sub(
    atomic<T*>* Atom,
    ptrdiff_t Value) noexcept;

매개 변수

Atom
T 형식에 대한 포인터를 저장하는 atomic 개체에 대한 포인터입니다.

Value
ptrdiff_t 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 포인터의 값입니다.

설명

이 함수는 atomic_fetch_sub 제약 조건을 사용하여 memory_order.memory_order_seq_cst 저장된 값을 Atom원자성으로 빼 Value 기 위해 읽기-수정-쓰기 작업을 수행합니다.

원자성 형식이 atomic_address인 경우, Value의 형식은 ptrdiff_t이고 연산은 저장된 포인터를 char *로 취급합니다.

이 연산은 또한 정수 형식에 대해 오버로드됩니다.

integral atomic_fetch_sub(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_sub(atomic-integral* Atom, integral Value) noexcept;

atomic_fetch_sub_explicit

값을 atomic 개체에 저장된 기존의 값에서 뺍니다.

template <class T>
T* atomic_fetch_sub_explicit(
    volatile atomic<T*>* Atom,
    ptrdiff_t Value,
    memory_order Order) noexcept;

template <class T>
T* atomic_fetch_sub_explicit(
    atomic<T*>* Atom,
    ptrdiff_t Value, memory_order Order) noexcept;

매개 변수

Atom
T 형식에 대한 포인터를 저장하는 atomic 개체에 대한 포인터입니다.

Value
ptrdiff_t 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 포인터의 값입니다.

설명

이 함수는 atomic_fetch_sub_explicit 지정된 제약 조건 내에서 memory_order 저장된 값을 Atom원자성으로 빼 Value 기 위해 읽기-수정-쓰기 작업을 수행합니다Order.

원자성 형식이 atomic_address인 경우, Value의 형식은 ptrdiff_t이고 연산은 저장된 포인터를 char *로 취급합니다.

이 연산은 또한 정수 형식에 대해 오버로드됩니다.

integral atomic_fetch_sub_explicit(
    volatile atomic-integral* Atom,
    integral Value,
    memory_order Order) noexcept;

integral atomic_fetch_sub_explicit(
    atomic-integral* Atom,
    integral Value,
    memory_order Order) noexcept;

atomic_fetch_xor

atomic 개체에 저장된 기존 값 및 특정 값에 대해 비트 exclusive or를 수행합니다.

template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;

template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_xor 읽기-수정-쓰기 작업을 수행하여 저장된 값을 Atom 비트 Value exclusive or 단위로 바꾸고 현재 값은 Atom다음을 사용합니다memory_order.memory_order_seq_cst.

atomic_fetch_xor_explicit

개체에 저장된 값과 기존 값에 대해 비트 exclusive or 단위로 atomic 수행합니다.

template <class T>
inline T atomic_fetch_xor_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

template <class T>
inline T atomic_fetch_xor_explicit(
    volatile atomic<T>* Atom,
    T Value,
    memory_order Order) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
T 형식의 값입니다.

Order
memory_order.

Return Value

작업이 수행되기 직전에 개체에 atomic 포함된 값입니다.

설명

이 함수는 atomic_fetch_xor_explicit read-modify-write 연산을 수행하여 저장된 값을 Atom 비트 exclusive or Value 단위로 바꾸고, 현재 값은 지정된 제약 조건 Order내에서 memory_order 저장Atom됩니다.

atomic_flag_clear

개체memory_order.memory_order_seq_cstfalse의 플래그를 bool atomic_flag .

inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;

매개 변수

Flag
atomic_flag 개체에 대한 포인터입니다.

atomic_flag_clear_explicit

개체의 bool 플래그를 atomic_flag 지정된 memory_order 제약 조건 내의 플래그로 false설정합니다.

inline void atomic_flag_clear_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline void atomic_flag_clear_explicit(atomic_flag* Flag, memory_order Order) noexcept;

매개 변수

Flag
atomic_flag 개체에 대한 포인터입니다.

Order
memory_order.

atomic_flag_test_and_set

개체true의 플래그를 bool atomic_flag 의 제약 조건 내의 memory_order.memory_order_seq_cst플래그로 설정합니다.

inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag,) noexcept;
inline bool atomic_flag_test_and_set(atomic_flag* Flag,) noexcept;

매개 변수

Flag
atomic_flag 개체에 대한 포인터입니다.

Return Value

Flag의 초기 값입니다.

atomic_flag_test_and_set_explicit

개체의 bool 플래그를 atomic_flag 지정된 memory_order 제약 조건 내의 플래그로 true설정합니다.

inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline bool atomic_flag_test_and_set_explicit(atomic_flag* Flag, memory_order Order) noexcept;

매개 변수

Flag
atomic_flag 개체에 대한 포인터입니다.

Order
memory_order.

Return Value

Flag의 초기 값입니다.

atomic_init

atomic 개체에서 저장된 값을 설정합니다.

template <class Ty>
inline void atomic_init(volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline void atomic_init(atomic<Ty>* Atom, Ty Value) noexcept;

매개 변수

Atom
Ty 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

설명

atomic_init 는 원자성 연산이 아닙니다. 스레드로부터 안전하지 않습니다.

atomic_is_lock_free

atomic 개체의 원자 연산이 잠금 해제인지를 지정합니다.

template <class T>
inline bool atomic_is_lock_free(const volatile atomic<T>* Atom) noexcept;
template <class T>
inline bool atomic_is_lock_free(const atomic<T>* Atom) noexcept;

매개 변수

Atom
T 형식의 값을 저장하는 atomic 개체에 대한 포인터입니다.

Return Value

Atom의 원자 연산이 잠금 해제인 경우 true, 아닌 경우 false입니다.

설명

하나의 원자 형식에 대해 어떠한 원자 작업도 잠금을 사용하지 않는 경우, 해당 원자 형식은 잠금 없음이라고 합니다. 이 함수가 반환 true되면 형식은 신호 처리기에서 안전하게 사용할 수 있습니다.

atomic_load

atomic 개체에서 저장된 값을 검색합니다.

template <class Ty>
inline Ty atomic_load(const volatile atomic<Ty>* Atom) noexcept;
template <class Ty>
inline Ty atomic_load(const atomic<Ty>* Atom) noexcept;

매개 변수

Atom
Ty 형식의 값을 포함하는 atomic 개체에 대한 포인터입니다.

Return Value

Atom에 저장된 검색된 값입니다.

설명

atomic_load 암시적으로 .를 memory_order.memory_order_seq_cst사용합니다.

atomic_load_explicit

지정된 memory_order개체 내의 atomic 개체에 저장된 값을 검색합니다.

template <class Ty>
inline Ty atomic_load_explicit(const volatile atomic<Ty>* Atom, memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_load_explicit(const atomic<Ty>* Atom, memory_order Order) noexcept;

매개 변수

Atom
Ty 형식의 값을 포함하는 atomic 개체에 대한 포인터입니다.

Order
memory_order. memory_order_release 또는 memory_order_acq_rel을 사용하지 마세요.

Return Value

Atom에 저장된 검색된 값입니다.

atomic_signal_fence

동일한 스레드에서 실행되는 신호 처리기가 있는 호출 스레드의 다른 펜스 간에 로드/저장소 작업 간의 순서를 적용하는 메모리 동기화 기본 형식인 펜스 역할을 합니다.

inline void atomic_signal_fence(memory_order Order) noexcept;

매개 변수

Order
fence 형식을 결정하는 메모리 순서 제약 조건입니다.

설명

Order 인수는 fence 형식을 결정합니다.

설명
memory_order_relaxed fence가 효과가 없습니다.
memory_order_consume fence가 acquire fence입니다.
memory_order_acquire fence가 acquire fence입니다.
memory_order_release fence가 release fence입니다.
memory_order_acq_rel fence가 acquire fence이면서 동시에 release fence입니다.
memory_order_seq_cst fence가 acquire fence이면서 동시에 release fence이고, 일관된 순서로 되어 있습니다.

atomic_store

개체에 atomic 값을 원자성으로 저장합니다.

template <class Ty>
inline Ty atomic_store_explicit(const volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(const atomic<Ty>* Atom, T Value) noexcept;

매개 변수

Atom
Ty 형식의 값을 포함하는 atomic 개체에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

설명

atomic_store은 제약 조건 내에서 가리키는 Atom개체에 Value 를 저장합니다memory_order.memory_order_seq_cst.

atomic_store_explicit

개체에 atomic 값을 원자성으로 저장합니다.

template <class Ty>
inline Ty atomic_store_explicit(
    const volatile atomic<Ty>* Atom,
    Ty Value,
    memory_order Order) noexcept;

template <class Ty>
inline Ty atomic_store_explicit(
    const atomic<Ty>* Atom,
    T Value,
    memory_order Order) noexcept;

매개 변수

Atom
Ty 형식의 값을 포함하는 atomic 개체에 대한 포인터입니다.

Value
Ty 형식의 값입니다.

Order
memory_order. memory_order_consume, memory_order_acquire 또는 memory_order_acq_rel을 사용하지 마세요.

설명

atomic_storeOrder에 지정된 memory_order 내에서 Atom이 가리키는 개체에 Value를 저장합니다.

atomic_thread_fence

연결된 원자성 작업 없이 로드/저장소 작업 간에 순서 지정을 적용하는 메모리 동기화 기본 형식인 펜스 역할을 합니다.

inline void atomic_thread_fence(memory_order Order) noexcept;

매개 변수

Order
fence 형식을 결정하는 메모리 순서 제약 조건입니다.

설명

Order 인수는 fence 형식을 결정합니다.

설명
memory_order_relaxed fence가 효과가 없습니다.
memory_order_consume fence가 acquire fence입니다.
memory_order_acquire fence가 acquire fence입니다.
memory_order_release fence가 release fence입니다.
memory_order_acq_rel fence가 acquire fence이면서 동시에 release fence입니다.
memory_order_seq_cst fence가 acquire fence이면서 동시에 release fence이고, 일관된 순서로 되어 있습니다.

kill_dependency

종속성을 제거합니다.

template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;

매개 변수

Arg
Ty 형식의 값입니다.

Return Value

반환 값은 Arg입니다. Arg의 평가는 함수 호출에 대한 종속성을 수행하지 않습니다. 가능한 종속성 체인을 중단하면 함수는 컴파일러가 좀 더 효율적인 코드를 생성하도록 허용할 수 있습니다.

참고 항목

<atomic>