<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_cst
false
의 플래그를 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_store
는 Order
에 지정된 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
의 평가는 함수 호출에 대한 종속성을 수행하지 않습니다. 가능한 종속성 체인을 중단하면 함수는 컴파일러가 좀 더 효율적인 코드를 생성하도록 허용할 수 있습니다.