NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
futex.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_ASYNC_FUTEX_HPP__
2#define NEFORCE_CORE_ASYNC_FUTEX_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14
20
26
33#ifdef NEFORCE_PLATFORM_WINDOWS
34 long;
35#else
36 int;
37#endif
38
39
66
67
78void NEFORCE_API futex_wait(void* addr, platform_wait_t value) noexcept;
79
102bool NEFORCE_API futex_wait_until(void* addr, platform_wait_t value, bool has_timeout, int64_t sec, int64_t ns,
103 bool is_monotonic = false);
104
115void NEFORCE_API futex_notify(void* addr, bool all) noexcept;
116
117#ifdef NEFORCE_PLATFORM_LINUX
118# define NEFORCE_FUTEX_HAS_ADVANCED 1
119
120int futex(void* wait_addr, futex_wait_flags flags, int wake_count, void* requeue_addr, int requeue_count,
121 int cmp_value) noexcept;
122
131int NEFORCE_API futex_requeue(void* wait_addr, int wake_count, void* requeue_addr, int requeue_count) noexcept;
132
144int NEFORCE_API futex_wake_op(void* addr, int wake_count, void* op_addr, int op_arg, int op, int cmp,
145 int cmp_arg) noexcept;
146
147int NEFORCE_API futex_lock_pi(void* addr) noexcept;
148int NEFORCE_API futex_trylock_pi(void* addr) noexcept;
149int NEFORCE_API futex_unlock_pi(void* addr) noexcept;
150
158int NEFORCE_API futex_wait_requeue_pi(void* wait_addr, int value, void* requeue_addr) noexcept;
159
160#endif // NEFORCE_PLATFORM_LINUX
161 // Futex
163 // AsyncComponents
165
166NEFORCE_END_NAMESPACE__
167#endif // NEFORCE_CORE_ASYNC_FUTEX_HPP__
long long int64_t
64位有符号整数类型
void NEFORCE_API futex_notify(void *addr, bool all) noexcept
通知等待的线程
void NEFORCE_API futex_wait(void *addr, platform_wait_t value) noexcept
无限期等待FUTEX
bool NEFORCE_API futex_wait_until(void *addr, platform_wait_t value, bool has_timeout, int64_t sec, int64_t ns, bool is_monotonic=false)
等待FUTEX直到指定时间点或条件满足
int platform_wait_t
平台等待类型别名
futex_wait_flags
FUTEX操作标志枚举
@ wake_op
唤醒并原子修改另一个FUTEX
@ private_flag
私有标志位
@ bitset_match_any
匹配任何等待集合的位掩码
@ wake
唤醒操作
@ wake_bitset_private
私有位集唤醒操作
@ wait
等待操作
@ wait_bitset_private
私有位集等待操作
@ lock_pi
优先级继承锁(加锁)
@ wait_requeue_pi
等待并转移到PI FUTEX
@ unlock_pi
优先级继承锁(解锁)
@ cmp_requeue
带比较的转移
@ wake_private
私有唤醒操作
@ requeue
将等待队列转移到另一个FUTEX
@ wake_bitset
位集唤醒操作
@ wait_bitset
位集等待操作
@ cmp_requeue_pi
带比较的等待并转移
@ wait_private
私有等待操作
@ trylock_pi
尝试加锁(非阻塞)
类型萃取