|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
原子变量的操作 更多...
类型定义 | |
| template<typename T> | |
| using | atomic_diff_t = conditional_t<is_pointer_v<T>, ptrdiff_t, remove_volatile_t<T>> |
| 原子操作的差值类型 | |
函数 | |
| NEFORCE_ALWAYS_INLINE_INLINE void | atomic_thread_fence (const memory_order mo) noexcept |
| 线程内存屏障 | |
| NEFORCE_ALWAYS_INLINE_INLINE void | atomic_signal_fence (const memory_order mo) noexcept |
| 信号内存屏障 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE void | atomic_store (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 原子存储操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_load (const volatile T *ptr, const memory_order mo) noexcept |
| 原子加载操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_exchange (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 原子交换操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE bool | atomic_cmpexch_weak (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > desired, const memory_order success, const memory_order failure) noexcept |
| 弱比较交换操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE bool | atomic_cmpexch_strong (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > desired, const memory_order success, const memory_order failure) noexcept |
| 强比较交换操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_fetch_add (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept |
| 原子获取并添加操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_fetch_sub (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept |
| 原子获取并减去操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_fetch_and (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 原子获取并与操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_fetch_or (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 原子获取并或操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_fetch_xor (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 原子获取并异或操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_add_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept |
| 原子添加并获取操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_sub_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept |
| 原子减去并获取操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_and_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 原子与并获取操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_or_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 原子或并获取操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_xor_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 原子异或并获取操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE bool | atomic_cmpexch_weak_any (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > *desired, const memory_order success, const memory_order failure) noexcept |
| 通用弱比较交换操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE bool | atomic_cmpexch_strong_any (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > *desired, const memory_order success, const memory_order failure) noexcept |
| 通用强比较交换操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE void | atomic_store_any (T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept |
| 通用原子存储操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_load_any (const T *ptr, memory_order mo) noexcept |
| 通用原子加载操作 | |
| template<typename T> | |
| NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > | atomic_exchange_any (T *ptr, remove_volatile_t< T > desired, memory_order mo) noexcept |
| 通用原子交换操作 | |
| template<typename T> | |
| T | atomic_fetch_add_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 通用原子获取并添加操作 | |
| template<typename T> | |
| T | atomic_fetch_sub_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 通用原子获取并减去操作 | |
| template<typename T> | |
| T | atomic_add_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 通用原子添加并获取操作 | |
| template<typename T> | |
| T | atomic_sub_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| 通用原子减去并获取操作 | |
| template<size_t Size, size_t Align> | |
| NEFORCE_CONSTEXPR17 bool | is_always_lock_free () noexcept |
| 检查是否支持无锁操作 | |
| template<typename T, typename Func, typename Clock, typename Dur> | |
| bool | atomic_wait_address_until_v (const T *addr, T &&old, Func &&func, const time_point< Clock, Dur > &timeout) noexcept |
| 基于值的原子定时等待(绝对时间) | |
| template<typename T, typename Pred, typename Clock, typename Dur> | |
| bool | atomic_wait_address_until (const T *addr, Pred pred, const time_point< Clock, Dur > &timeout) noexcept |
| 基于谓词的原子定时等待(绝对时间) | |
| template<typename Pred, typename Clock, typename Dur> | |
| bool | atomic_wait_address_until (const platform_wait_t *addr, Pred pred, const time_point< Clock, Dur > &timeout) noexcept |
| 基于谓词的原子定时等待(绝对时间) | |
| template<typename T, typename Func, typename Rep, typename Period> | |
| bool | atomic_wait_address_for_v (const T *addr, T &&old, Func &&func, const duration< Rep, Period > &rt) noexcept |
| 基于值的原子定时等待(相对时间) | |
| template<typename T, typename Pred, typename Rep, typename Period> | |
| bool | atomic_wait_address_for (const T *addr, Pred pred, const duration< Rep, Period > &rt) noexcept |
| 基于谓词的原子定时等待(相对时间) | |
| template<typename Pred, typename Rep, typename Period> | |
| bool | atomic_wait_address_for (const platform_wait_t *addr, Pred pred, const duration< Rep, Period > &rt) noexcept |
| 基于谓词的原子定时等待(相对时间) | |
| template<typename Pred, typename Spin = default_spin_policy> | |
| bool | atomic_spin (Pred &pred, Spin spin=Spin{}) noexcept |
| 原子自旋等待 | |
| template<typename T, typename Func> | |
| void | atomic_wait_address_v (const T *addr, T old, Func f) noexcept |
| 基于值的原子等待 | |
| template<typename T, typename Pred> | |
| void | atomic_wait_address (const T *addr, Pred pred) noexcept |
| 基于谓词的原子等待 | |
| template<typename T> | |
| void | atomic_notify_address (const T *addr, const bool all) noexcept |
| 原子通知 | |
原子变量的操作
| using atomic_diff_t = conditional_t<is_pointer_v<T>, ptrdiff_t, remove_volatile_t<T>> |
|
noexcept |
原子添加并获取操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要添加的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 754 行定义.
引用了 atomic_fetch_add() , 以及 is_integral_v.
被这些函数引用 atomic_base< char >::operator++(), atomic_base< char >::operator++(), atomic_ref_base< T, true, false >::operator++(), atomic_base< char >::operator+=(), atomic_base< char >::operator+=() , 以及 atomic_ref_base< T, true, false >::operator+=().
|
noexcept |
通用原子添加并获取操作
| T | 浮点类型 |
| ptr | 目标指针 |
| value | 要添加的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1122 行定义.
引用了 atomic_cmpexch_weak_any(), atomic_load_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic_float_base< Float >::operator+=(), atomic_float_base< Float >::operator+=() , 以及 atomic_ref_base< Float, false, true >::operator+=().
|
noexcept |
原子与并获取操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行与操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 794 行定义.
引用了 atomic_fetch_and() , 以及 is_integral_v.
被这些函数引用 atomic_base< char >::operator&=(), atomic_base< char >::operator&=() , 以及 atomic_ref_base< T, true, false >::operator&=().
|
noexcept |
强比较交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| expected | 期望值的指针 |
| desired | 期望设置的值 |
| success | 成功时的内存顺序 |
| failure | 失败时的内存顺序 |
在文件 atomic_base.hpp 第 603 行定义.
引用了 atomic_cmpexch_weak(), is_integral_v, is_valid_cmpexch_failure_order(), NEFORCE_CONSTEXPR_ASSERT , 以及 success.
被这些函数引用 atomic_float_base< Float >::compare_exchange_strong(), atomic_float_base< Float >::compare_exchange_strong(), atomic_ref_base< T, true, false >::compare_exchange_strong() , 以及 atomic_ref_base< T, true, false >::compare_exchange_strong().
|
noexcept |
通用强比较交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| expected | 期望值的指针 |
| desired | 期望设置的值 |
| success | 成功时的内存顺序 |
| failure | 失败时的内存顺序 |
在文件 atomic_base.hpp 第 978 行定义.
引用了 atomic_cmpexch_weak_any(), is_valid_cmpexch_failure_order(), memory_compare(), memory_order_seq_cst, NEFORCE_CONSTEXPR_ASSERT , 以及 success.
被这些函数引用 atomic< T >::compare_exchange_strong(), atomic< T >::compare_exchange_strong(), atomic_base< char >::compare_exchange_strong(), atomic_base< char >::compare_exchange_strong(), atomic_base< T * >::compare_exchange_strong(), atomic_base< T * >::compare_exchange_strong(), atomic_float_base< Float >::compare_exchange_strong(), atomic_float_base< Float >::compare_exchange_strong(), atomic_ref_base< Float, false, true >::compare_exchange_strong(), atomic_ref_base< Float, false, true >::compare_exchange_strong(), atomic_ref_base< T, false, false >::compare_exchange_strong() , 以及 atomic_ref_base< T, false, false >::compare_exchange_strong().
|
noexcept |
弱比较交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| expected | 期望值的指针 |
| desired | 期望设置的值 |
| success | 成功时的内存顺序 |
| failure | 失败时的内存顺序 |
在文件 atomic_base.hpp 第 462 行定义.
引用了 is_integral_v, is_valid_cmpexch_failure_order(), memory_order_seq_cst, NEFORCE_CONSTEXPR_ASSERT , 以及 success.
被这些函数引用 atomic_cmpexch_strong(), atomic_float_base< Float >::compare_exchange_weak(), atomic_float_base< Float >::compare_exchange_weak(), atomic_ref_base< T, true, false >::compare_exchange_weak() , 以及 atomic_ref_base< T, true, false >::compare_exchange_weak().
|
noexcept |
通用弱比较交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| expected | 期望值的指针 |
| desired | 期望设置的值 |
| success | 成功时的内存顺序 |
| failure | 失败时的内存顺序 |
在文件 atomic_base.hpp 第 857 行定义.
引用了 is_valid_cmpexch_failure_order(), memory_order_seq_cst, NEFORCE_CONSTEXPR_ASSERT , 以及 success.
被这些函数引用 atomic_add_fetch_any(), atomic_cmpexch_strong_any(), atomic_exchange_any(), atomic_fetch_add_any(), atomic_fetch_sub_any(), atomic_store_any(), atomic_sub_fetch_any(), atomic< T >::compare_exchange_weak(), atomic< T >::compare_exchange_weak(), atomic_base< char >::compare_exchange_weak(), atomic_base< char >::compare_exchange_weak(), atomic_base< T * >::compare_exchange_weak(), atomic_base< T * >::compare_exchange_weak(), atomic_float_base< Float >::compare_exchange_weak(), atomic_float_base< Float >::compare_exchange_weak(), atomic_ref_base< Float, false, true >::compare_exchange_weak(), atomic_ref_base< Float, false, true >::compare_exchange_weak(), atomic_ref_base< T, false, false >::compare_exchange_weak() , 以及 atomic_ref_base< T, false, false >::compare_exchange_weak().
|
noexcept |
原子交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 交换的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 435 行定义.
引用了 is_integral_v , 以及 memory_order_seq_cst.
被这些函数引用 atomic_base< char >::exchange(), atomic_base< char >::exchange() , 以及 atomic_ref_base< T, true, false >::exchange().
|
noexcept |
通用原子交换操作
| T | 数据类型 |
| ptr | 目标指针 |
| desired | 要交换的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1061 行定义.
引用了 addressof(), atomic_cmpexch_weak_any(), atomic_load_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic< T >::exchange(), atomic< T >::exchange(), atomic_float_base< Float >::exchange(), atomic_float_base< Float >::exchange(), atomic_ref_base< Float, false, true >::exchange() , 以及 atomic_ref_base< T, false, false >::exchange().
|
noexcept |
原子获取并添加操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要添加的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 638 行定义.
引用了 is_integral_v , 以及 memory_order_seq_cst.
被这些函数引用 atomic_add_fetch(), atomic_fetch_sub(), atomic_base< char >::fetch_add(), atomic_base< char >::fetch_add(), atomic_ref_base< T, true, false >::fetch_add() , 以及 atomic_semaphore< 1 >::release().
|
noexcept |
通用原子获取并添加操作
| T | 浮点类型 |
| ptr | 目标指针 |
| value | 要添加的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1086 行定义.
引用了 atomic_cmpexch_weak_any(), atomic_load_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic_base< T * >::fetch_add(), atomic_base< T * >::fetch_add(), atomic_float_base< Float >::fetch_add(), atomic_float_base< Float >::fetch_add() , 以及 atomic_ref_base< Float, false, true >::fetch_add().
|
noexcept |
原子获取并与操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行与操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 682 行定义.
引用了 is_integral_v , 以及 memory_order_seq_cst.
被这些函数引用 atomic_and_fetch(), atomic_base< char >::fetch_and(), atomic_base< char >::fetch_and() , 以及 atomic_ref_base< T, true, false >::fetch_and().
|
noexcept |
原子获取并或操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行或操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 706 行定义.
引用了 is_integral_v , 以及 memory_order_seq_cst.
被这些函数引用 atomic_or_fetch(), atomic_base< char >::fetch_or(), atomic_base< char >::fetch_or() , 以及 atomic_ref_base< T, true, false >::fetch_or().
|
noexcept |
原子获取并减去操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要减去的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 662 行定义.
引用了 atomic_fetch_add() , 以及 is_integral_v.
被这些函数引用 atomic_sub_fetch(), latch::count_down(), atomic_base< char >::fetch_sub(), atomic_base< char >::fetch_sub() , 以及 atomic_ref_base< T, true, false >::fetch_sub().
|
noexcept |
通用原子获取并减去操作
| T | 浮点类型 |
| ptr | 目标指针 |
| value | 要减去的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1104 行定义.
引用了 atomic_cmpexch_weak_any(), atomic_load_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic_base< T * >::fetch_sub(), atomic_base< T * >::fetch_sub(), atomic_float_base< Float >::fetch_sub(), atomic_float_base< Float >::fetch_sub() , 以及 atomic_ref_base< Float, false, true >::fetch_sub().
|
noexcept |
原子获取并异或操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行异或操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 730 行定义.
引用了 is_integral_v , 以及 memory_order_seq_cst.
被这些函数引用 atomic_xor_fetch(), atomic_base< char >::fetch_xor(), atomic_base< char >::fetch_xor() , 以及 atomic_ref_base< T, true, false >::fetch_xor().
|
noexcept |
原子加载操作
| T | 数据类型 |
| ptr | 源指针 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 412 行定义.
引用了 is_integral_v, memory_order_acquire , 以及 memory_order_seq_cst.
被这些函数引用 atomic_base< char >::load(), atomic_base< char >::load(), atomic_ref_base< T, true, false >::load() , 以及 latch::try_wait().
|
noexcept |
通用原子加载操作
| T | 数据类型 |
| ptr | 源指针 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1035 行定义.
引用了 memory_copy(), memory_order_acquire , 以及 memory_order_seq_cst.
被这些函数引用 atomic_add_fetch_any(), atomic_exchange_any(), atomic_fetch_add_any(), atomic_fetch_sub_any(), atomic_sub_fetch_any(), atomic< T >::load(), atomic< T >::load(), atomic_float_base< Float >::load(), atomic_float_base< Float >::load(), atomic_ref_base< Float, false, true >::load() , 以及 atomic_ref_base< T, false, false >::load().
|
noexcept |
原子通知
| T | 地址类型 |
| addr | 原子变量地址 |
| all | 是否通知所有等待线程 |
唤醒等待addr处值变化的线程。 使用裸等待器。
在文件 atomic_wait.hpp 第 444 行定义.
被这些函数引用 latch::count_down(), atomic_base< char >::notify_all(), atomic_base< T * >::notify_all(), atomic_flag::notify_all(), atomic_float_base< Float >::notify_all(), atomic_ref_base< Float, false, true >::notify_all(), atomic_ref_base< T, false, false >::notify_all(), atomic_ref_base< T, true, false >::notify_all(), atomic_base< char >::notify_one(), atomic_base< T * >::notify_one(), atomic_flag::notify_one(), atomic_float_base< Float >::notify_one(), atomic_ref_base< Float, false, true >::notify_one(), atomic_ref_base< T, false, false >::notify_one(), atomic_ref_base< T, true, false >::notify_one() , 以及 atomic_semaphore< 1 >::release().
|
noexcept |
原子或并获取操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行或操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 814 行定义.
引用了 atomic_fetch_or() , 以及 is_integral_v.
被这些函数引用 atomic_base< char >::operator|=(), atomic_base< char >::operator|=() , 以及 atomic_ref_base< T, true, false >::operator|=().
|
noexcept |
|
noexcept |
原子自旋等待
| Pred | 谓词类型 |
| Spin | 自旋策略类型 |
| pred | 等待条件谓词,当返回true时停止等待 |
| spin | 自旋策略对象 |
实现自旋等待机制:
在文件 atomic_wait.hpp 第 53 行定义.
被这些函数引用 atomic_semaphore< 1 >::try_acquire().
|
noexcept |
原子存储操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 存储的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 390 行定义.
引用了 is_integral_v, memory_order_release , 以及 memory_order_seq_cst.
被这些函数引用 atomic_flag::clear(), atomic_flag::clear(), atomic_base< char >::store(), atomic_base< char >::store() , 以及 atomic_ref_base< T, true, false >::store().
|
noexcept |
通用原子存储操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要存储的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1015 行定义.
引用了 addressof(), atomic_cmpexch_weak_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic< T >::store(), atomic< T >::store(), atomic_float_base< Float >::store(), atomic_float_base< Float >::store(), atomic_ref_base< Float, false, true >::store() , 以及 atomic_ref_base< T, false, false >::store().
|
noexcept |
原子减去并获取操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要减去的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 774 行定义.
引用了 atomic_fetch_sub() , 以及 is_integral_v.
被这些函数引用 atomic_base< char >::operator--(), atomic_base< char >::operator--(), atomic_ref_base< T, true, false >::operator--(), atomic_base< char >::operator-=(), atomic_base< char >::operator-=() , 以及 atomic_ref_base< T, true, false >::operator-=().
|
noexcept |
通用原子减去并获取操作
| T | 浮点类型 |
| ptr | 目标指针 |
| value | 要减去的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 1140 行定义.
引用了 atomic_cmpexch_weak_any(), atomic_load_any() , 以及 memory_order_relaxed.
被这些函数引用 atomic_float_base< Float >::operator-=(), atomic_float_base< Float >::operator-=() , 以及 atomic_ref_base< Float, false, true >::operator-=().
|
noexcept |
线程内存屏障
| mo | 内存顺序 |
在不同线程间插入内存屏障,确保内存操作的顺序性。
在文件 atomic_base.hpp 第 37 行定义.
引用了 memory_order_acquire, memory_order_consume, memory_order_relaxed , 以及 memory_order_seq_cst.
|
noexcept |
基于谓词的原子等待
| T | 地址类型 |
| Pred | 谓词类型 |
| addr | 原子变量地址 |
| pred | 等待条件谓词,当返回true时停止等待 |
等待直到pred()返回true。
在文件 atomic_wait.hpp 第 429 行定义.
被这些函数引用 atomic_semaphore< 1 >::acquire(), latch::wait() , 以及 tree_barrier< CmplFunc >::wait().
|
noexcept |
基于谓词的原子定时等待(相对时间)
| Pred | 谓词类型 |
| Rep | 时间表示类型 |
| Period | 时间单位比例 |
| addr | 平台等待类型地址 |
| pred | 等待条件谓词 |
| rt | 相对超时时间 |
针对平台等待类型的特化版本,使用裸等待器。
在文件 atomic_timed_wait.hpp 第 485 行定义.
|
noexcept |
基于谓词的原子定时等待(相对时间)
| T | 地址类型 |
| Pred | 谓词类型 |
| Rep | 时间表示类型 |
| Period | 时间单位比例 |
| addr | 原子变量地址 |
| pred | 等待条件谓词 |
| rt | 相对超时时间 |
等待直到pred()返回true或经过指定时间。
在文件 atomic_timed_wait.hpp 第 467 行定义.
|
noexcept |
基于值的原子定时等待(相对时间)
| T | 值类型 |
| Func | 获取当前值的函数类型 |
| Rep | 时间表示类型 |
| Period | 时间单位比例 |
| addr | 原子变量地址 |
| old | 期望的值 |
| func | 获取当前值的函数 |
| rt | 相对超时时间 |
等待直到addr处的值不等于old或经过指定时间。
在文件 atomic_timed_wait.hpp 第 448 行定义.
|
noexcept |
基于谓词的原子定时等待(绝对时间)
| Pred | 谓词类型 |
| Clock | 时钟类型 |
| Dur | 持续时间类型 |
| addr | 平台等待类型地址 |
| pred | 等待条件谓词 |
| timeout | 超时时间点 |
针对平台等待类型的特化版本,使用裸等待器。
在文件 atomic_timed_wait.hpp 第 428 行定义.
引用了 timeout.
|
noexcept |
基于谓词的原子定时等待(绝对时间)
| T | 地址类型 |
| Pred | 谓词类型 |
| Clock | 时钟类型 |
| Dur | 持续时间类型 |
| addr | 原子变量地址 |
| pred | 等待条件谓词 |
| timeout | 超时时间点 |
等待直到pred()返回true或超时。
在文件 atomic_timed_wait.hpp 第 410 行定义.
引用了 timeout.
|
noexcept |
基于值的原子定时等待(绝对时间)
| T | 值类型 |
| Func | 获取当前值的函数类型 |
| Clock | 时钟类型 |
| Dur | 持续时间类型 |
| addr | 原子变量地址 |
| old | 期望的值 |
| func | 获取当前值的函数 |
| timeout | 超时时间点 |
等待直到addr处的值不等于old或超时。
在文件 atomic_timed_wait.hpp 第 391 行定义.
引用了 timeout.
|
noexcept |
基于值的原子等待
| T | 值类型 |
| Func | 获取当前值的函数类型 |
| addr | 原子变量地址 |
| old | 期望的值 |
| f | 获取当前值的函数 |
等待直到addr处的值不等于old。
在文件 atomic_wait.hpp 第 414 行定义.
被这些函数引用 atomic_base< char >::wait(), atomic_base< T * >::wait(), atomic_flag::wait(), atomic_flag::wait(), atomic_float_base< Float >::wait(), atomic_ref_base< Float, false, true >::wait(), atomic_ref_base< T, false, false >::wait() , 以及 atomic_ref_base< T, true, false >::wait().
|
noexcept |
原子异或并获取操作
| T | 数据类型 |
| ptr | 目标指针 |
| value | 要进行异或操作的值 |
| mo | 内存顺序 |
在文件 atomic_base.hpp 第 834 行定义.
引用了 atomic_fetch_xor() , 以及 is_integral_v.
被这些函数引用 atomic_base< char >::operator^=(), atomic_base< char >::operator^=() , 以及 atomic_ref_base< T, true, false >::operator^=().
检查是否支持无锁操作
| Size | 数据类型大小 |
| Align | 数据对齐要求 |
在文件 atomic_base.hpp 第 1157 行定义.
被这些函数引用 atomic< T >::is_lock_free(), atomic< T >::is_lock_free(), atomic_base< char >::is_lock_free(), atomic_base< char >::is_lock_free(), atomic_base< T * >::is_lock_free(), atomic_base< T * >::is_lock_free(), atomic_float_base< Float >::is_lock_free(), atomic_float_base< Float >::is_lock_free(), atomic_ref_base< Float, false, true >::is_lock_free(), atomic_ref_base< T, false, false >::is_lock_free() , 以及 atomic_ref_base< T, true, false >::is_lock_free().