XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
xwos::sync::Br< TNum > 模板类 参考

线程栅栏基类 更多...

#include <Br.hxx>

类 xwos::sync::Br< TNum > 继承关系图:
xwos::sync::Br< TNum > 的协作图:

Public 类型

enum  WaitMode : xwu32_t { BrWait = 0 , BrWaitTimed , BrWaitUninterruptable }
 等待模式枚举 更多...
 

Public 成员函数

xwsz_t num ()
 获取事件的最大数量
 
xwer_t wait (enum WaitMode mode, xwtm_t to)
 等待所有线程到达栅栏
 
template<xwsz_t TSelNum>
xwer_t bind (Sel< TSelNum > *sel, long pos)
 绑定线程栅栏对象到信号选择器
 
template<xwsz_t TSelNum>
xwer_t bind (Sel< TSelNum > &sel, long pos)
 绑定线程栅栏对象到信号选择器
 
template<xwsz_t TSelNum>
xwer_t unbind (Sel< TSelNum > *sel)
 从信号选择器上解绑线程栅栏对象
 
template<xwsz_t TSelNum>
xwer_t unbind (Sel< TSelNum > &sel)
 从信号选择器上解绑线程栅栏对象
 
struct xwos_brgetXwosObj ()
 获取XWOS对象指针
 

Protected 成员函数

 Br ()
 
 ~Br ()
 

Protected 属性

struct xwos_brmBrPtr
 

详细描述

template<xwsz_t TNum>
class xwos::sync::Br< TNum >

线程栅栏基类

在文件 Br.hxx54 行定义.

成员枚举类型说明

◆ WaitMode

template<xwsz_t TNum>
enum xwos::sync::Br::WaitMode : xwu32_t

等待模式枚举

枚举值
BrWait 

等待模式

BrWaitTimed 

定时等待模式

BrWaitUninterruptable 

不可中断等待模式

在文件 Br.hxx60 行定义.

60 : xwu32_t {
61 BrWait = 0,
64 };
@ BrWaitTimed
Definition Br.hxx:62
@ BrWaitUninterruptable
Definition Br.hxx:63
uint32_t xwu32_t
Definition type.h:266

构造及析构函数说明

◆ Br()

template<xwsz_t TNum>
xwos::sync::Br< TNum >::Br ( )
inlineprotected

在文件 Br.hxx70 行定义.

70: mBrPtr(nullptr) {}
struct xwos_br * mBrPtr
Definition Br.hxx:67

◆ ~Br()

template<xwsz_t TNum>
xwos::sync::Br< TNum >::~Br ( )
inlineprotected

在文件 Br.hxx71 行定义.

71{ mBrPtr = nullptr; }

成员函数说明

◆ num()

template<xwsz_t TNum>
xwsz_t xwos::sync::Br< TNum >::num ( )
inline

获取事件的最大数量

在文件 Br.hxx77 行定义.

77{ return TNum; }

◆ wait()

template<xwsz_t TNum>
xwer_t xwos::sync::Br< TNum >::wait ( enum WaitMode  mode,
xwtm_t  to 
)
inline

等待所有线程到达栅栏

参数
[in]mode等待模式,取值 Br::WaitMode
[in]to期望唤醒的时间点,仅当 mode == Br::WaitMode::BrWaitTimed 时有效。
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG线程数量超出范围
-ETIMEDOUT超时
-EINTR等待被中断
-ENOTTHDCTX:不在线程上下文中
注解
  • 上下文:线程
  • 等待分为下列几种模式:

在文件 Br.hxx104 行定义.

105 {
106 xwer_t rc;
107 switch (mode) {
108 case WaitMode::BrWait:
109 rc = xwos_br_wait(mBrPtr);
110 break;
112 rc = xwos_br_wait_to(mBrPtr, to);
113 break;
116 break;
117 default:
118 rc = xwos_br_wait(mBrPtr);
119 break;
120 }
121 return rc;
122 }
signed long xwer_t
Definition type.h:554
static xwer_t xwos_br_wait_to(struct xwos_br *br, xwtm_t to)
XWOS API:限时等待所有线程到达栅栏
Definition br.h:362
static xwer_t xwos_br_wait_unintr(struct xwos_br *br)
XWOS API:等待所有线程到达栅栏,且等待不可被中断
Definition br.h:380
static xwer_t xwos_br_wait(struct xwos_br *br)
XWOS API:等待所有线程到达栅栏
Definition br.h:337
函数调用图:

◆ bind() [1/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Br< TNum >::bind ( Sel< TSelNum > *  sel,
long  pos 
)
inline

绑定线程栅栏对象到信号选择器

参数
[in]sel信号选择器的指针
[in]pos线程栅栏对象映射到信号选择器位图中的位置
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
-EALREADY同步对象已经绑定到事件对象
-EBUSY通道已经被其他同步对象独占
注解
  • 上下文:任意
  • 绑定方式:非独占绑定
  • 当所有线程到达线程栅栏时,线程栅栏将向信号选择器发送信号。

在文件 Br.hxx141 行定义.

142 {
143 return xwos_br_bind(mBrPtr, sel->getXwosObj(), (xwsq_t)pos);
144 }
unsigned long xwsq_t
Definition type.h:445
static xwer_t xwos_br_bind(struct xwos_br *br, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定线程栅栏到信号选择器
Definition br.h:286
函数调用图:

◆ bind() [2/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Br< TNum >::bind ( Sel< TSelNum > &  sel,
long  pos 
)
inline

绑定线程栅栏对象到信号选择器

参数
[in]sel信号选择器的引用
[in]pos线程栅栏对象映射到信号选择器位图中的位置
返回
错误码
返回值
XWOK没有错误
-EFAULT无效的指针或空指针
-ECHRNG位置超出范围
-EALREADY同步对象已经绑定到事件对象
-EBUSY通道已经被其他同步对象独占
注解
  • 上下文:任意
  • 绑定方式:非独占绑定
  • 当所有线程到达线程栅栏时,线程栅栏将向信号选择器发送信号。

在文件 Br.hxx163 行定义.

164 {
165 return xwos_br_bind(mBrPtr, sel.getXwosObj(), (xwsq_t)pos);
166 }
函数调用图:

◆ unbind() [1/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Br< TNum >::unbind ( Sel< TSelNum > *  sel)
inline

从信号选择器上解绑线程栅栏对象

参数
[in]sel信号选择器的引用
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENOTCONN同步对象没有绑定到事件对象上
注解
  • 上下文:任意

在文件 Br.hxx179 行定义.

180 {
181 return xwos_br_unbind(mBrPtr, sel->getXwosObj());
182 }
static xwer_t xwos_br_unbind(struct xwos_br *br, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑线程栅栏
Definition br.h:303
函数调用图:

◆ unbind() [2/2]

template<xwsz_t TNum>
template<xwsz_t TSelNum>
xwer_t xwos::sync::Br< TNum >::unbind ( Sel< TSelNum > &  sel)
inline

从信号选择器上解绑线程栅栏对象

参数
[in]sel信号选择器的引用
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENOTCONN同步对象没有绑定到事件对象上
注解
  • 上下文:任意

在文件 Br.hxx195 行定义.

196 {
197 return xwos_br_unbind(mBrPtr, sel.getXwosObj());
198 }
函数调用图:

◆ getXwosObj()

template<xwsz_t TNum>
struct xwos_br * xwos::sync::Br< TNum >::getXwosObj ( )
inline

获取XWOS对象指针

在文件 Br.hxx203 行定义.

203{ return mBrPtr; }

结构体成员变量说明

◆ mBrPtr

template<xwsz_t TNum>
struct xwos_br* xwos::sync::Br< TNum >::mBrPtr
protected

在文件 Br.hxx67 行定义.


该类的文档由以下文件生成: