XWOS API
4.0
XWOS C/C++ API参考手册
|
结构体 | |
struct | xwos_br |
XWOS API:线程栅栏 更多... | |
struct | xwos_br_d |
XWOS API:线程栅栏对象描述符 更多... | |
宏定义 | |
#define | XWOS_BR_NILD ((xwos_br_d){NULL, 0,}) |
XWOS API:空的线程栅栏对象描述符 | |
函数 | |
static xwer_t | xwos_br_init (struct xwos_br *br, xwsz_t num, xwbmp_t *bmp, xwbmp_t *msk) |
XWOS API:静态方式初始化线程栅栏 | |
static xwer_t | xwos_br_fini (struct xwos_br *br) |
XWOS API:销毁静态方式初始化的线程栅栏 | |
static xwer_t | xwos_br_grab (struct xwos_br *br) |
XWOS API:增加线程栅栏对象的引用计数 | |
static xwer_t | xwos_br_put (struct xwos_br *br) |
XWOS API:减少线程栅栏对象的引用计数 | |
static xwer_t | xwos_br_create (xwos_br_d *brd, xwsz_t num) |
XWOS API:动态方式创建线程栅栏 | |
static xwer_t | xwos_br_delete (xwos_br_d brd) |
XWOS API:删除动态方式创建的线程栅栏 | |
static xwer_t | xwos_br_acquire (xwos_br_d brd) |
XWOS API:检查线程栅栏对象的标签并增加引用计数 | |
static xwer_t | xwos_br_release (xwos_br_d brd) |
XWOS API:检查对象的标签并减少引用计数 | |
static xwsq_t | xwos_br_get_tik (struct xwos_br *br) |
XWOS API:获取线程栅栏对象的标签 | |
static xwos_br_d | xwos_br_get_d (struct xwos_br *br) |
XWOS API:获取线程栅栏对象描述符 | |
static xwer_t | xwos_br_bind (struct xwos_br *br, struct xwos_sel *sel, xwsq_t pos) |
XWOS API:绑定线程栅栏到信号选择器 | |
static xwer_t | xwos_br_unbind (struct xwos_br *br, struct xwos_sel *sel) |
XWOS API:从信号选择器上解绑线程栅栏 | |
static xwer_t | xwos_br_get_num (struct xwos_br *br, xwsz_t *numbuf) |
XWOS API:获取线程栅栏中线程槽数量 | |
static xwer_t | xwos_br_wait (struct xwos_br *br) |
XWOS API:等待所有线程到达栅栏 | |
static xwer_t | xwos_br_wait_to (struct xwos_br *br, xwtm_t to) |
XWOS API:限时等待所有线程到达栅栏 | |
技术参考手册: 线程栅栏
xwos_br_init()
:静态初始化xwos_br_fini()
:销毁xwos_br_create()
:动态创建xwos_br_delete()
:删除xwos_br_get_num()
:获取线程栅栏中线程槽数量,可在 任意 上下文使用xwos_br_wait()
:等待所有线程到达栅栏,只能在 线程 上下文使用xwos_br_wait_to()
:限时等待所有线程到达栅栏,只能在 线程 上下文使用xwos_br_bind()
:将线程栅栏绑定到 信号选择器 上xwos_br_unbind()
:从 信号选择器 上解绑xwos_br_grab()
:增加引用计数xwos_br_put()
:减少引用计数xwos_br_acquire()
:增加引用计数xwos_br_release()
:减少引用计数已知线程栅栏对象的指针的情况下,可以通过 xwos_br_get_d()
获取 xwos_br_d , 或可以通过 xwos_br_get_tik()
获取对象标签。
C++头文件: xwos/osal/sync/br.hxx
XWOS API:检查线程栅栏对象的标签并增加引用计数
[in] | brd | 线程栅栏对象描述符 |
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
XWOS API:绑定线程栅栏到信号选择器
[in] | br | 线程栅栏对象的指针 |
[in] | sel | 信号选择器的指针 |
[in] | pos | 线程栅栏对象映射到位图中的位置 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 线程数量超出范围 |
-EALREADY | 同步对象已经绑定到事件对象 |
-EBUSY | 通道已经被其他同步对象独占 |
当所有线程到达线程栅栏时,绑定了信号选择器的线程栅栏将向信号选择器发送信号。
XWOS API:限时等待所有线程到达栅栏
[in] | br | 线程栅栏对象的指针 |
[in] | to | 期望唤醒的时间点 |
XWOK | 没有错误 |
-EFAULT | 无效的指针或空指针 |
-ECHRNG | 线程数量超出范围 |
-ETIMEDOUT | 超时 |
-EINTR | 等待被中断 |
-ENOTTHDCTX:不在线程上下文中 |
to
表示等待超时的时间点:
to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;to
是过去的时间点,将直接返回 -ETIMEDOUT
。