|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
系统信号量类 更多...
#include <semaphore.hpp>
Public 成员函数 | |
| semaphore (long initial=0, long maximum=max_count) | |
| 构造系统级信号量 | |
| ~semaphore () noexcept | |
| 析构函数,释放系统资源 | |
| void | acquire () noexcept |
| 阻塞获取信号量 | |
| bool | try_acquire () noexcept |
| 非阻塞尝试获取信号量 | |
| template<typename Rep, typename Period> | |
| bool | try_acquire_for (const duration< Rep, Period > &relative) noexcept |
| 在相对超时时间内尝试获取信号量 | |
| template<typename Clock, typename Dur> | |
| bool | try_acquire_until (const time_point< Clock, Dur > &timeout) noexcept |
| 在绝对时间点前尝试获取信号量 | |
| void | release (long update=1) |
| 释放信号量 | |
| int | value () const noexcept |
| 查询当前信号量计数值 | |
|
explicit |
构造系统级信号量
| initial | 初始计数值,必须 >= 0 |
| maximum | 最大计数值(Windows),必须 >= initial |
| system_exception | 当系统API调用失败时抛出 |
被这些函数引用 ~semaphore().
|
noexcept |
| void semaphore::release | ( | long | update = 1 | ) |
|
noexcept |
非阻塞尝试获取信号量
尝试获取信号量,如果计数器大于0则立即减少计数器并返回true; 否则立即返回false。
引用了 try_acquire().
被这些函数引用 try_acquire() , 以及 try_acquire_until().
|
inlinenoexcept |
在相对超时时间内尝试获取信号量
| Rep | 时间表示类型 |
| Period | 时间单位比例 |
| relative | 相对超时时长 |
阻塞当前线程,直到成功获取信号量或超时。 超时时间从调用开始计算。
在文件 semaphore.hpp 第 245 行定义.
引用了 time_cast() , 以及 try_acquire_for().
被这些函数引用 try_acquire_for() , 以及 try_acquire_until().
|
inlinenoexcept |
在绝对时间点前尝试获取信号量
| Clock | 时钟类型 |
| Dur | 持续时间类型 |
| timeout | 绝对超时时间点 |
阻塞当前线程,直到成功获取信号量或到达指定时间点。 如果timeout <= now,则立即调用try_acquire()。
在文件 semaphore.hpp 第 264 行定义.
引用了 timeout, try_acquire() , 以及 try_acquire_for().
|
noexcept |
查询当前信号量计数值
查询后立即可能有其他线程改变信号量值。