XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
Br.hxx
浏览该文件的文档.
1
13#ifndef __xwos_cxx_sync_Br_hxx__
14#define __xwos_cxx_sync_Br_hxx__
15
16#include <xwos/cxx/Bmp.hxx>
17#include <xwos/cxx/sync/Sel.hxx>
18
19extern "C" {
20#include <xwos/osal/sync/br.h>
21}
22
23namespace xwos {
24namespace sync {
25
53template<xwsz_t TNum>
54class Br
55{
56 public:
61 BrWait = 0,
64 };
65
66 protected:
67 struct xwos_br * mBrPtr;
68
69 protected:
70 Br() : mBrPtr(nullptr) {}
71 ~Br() { mBrPtr = nullptr; }
72
73 public:
77 xwsz_t num() { return TNum; }
78
104 xwer_t wait(enum WaitMode mode, xwtm_t to)
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 }
123
140 template<xwsz_t TSelNum>
141 xwer_t bind(Sel<TSelNum> * sel, long pos)
142 {
143 return xwos_br_bind(mBrPtr, sel->getXwosObj(), (xwsq_t)pos);
144 }
145
162 template<xwsz_t TSelNum>
163 xwer_t bind(Sel<TSelNum> & sel, long pos)
164 {
165 return xwos_br_bind(mBrPtr, sel.getXwosObj(), (xwsq_t)pos);
166 }
167
178 template<xwsz_t TSelNum>
180 {
181 return xwos_br_unbind(mBrPtr, sel->getXwosObj());
182 }
183
194 template<xwsz_t TSelNum>
196 {
197 return xwos_br_unbind(mBrPtr, sel.getXwosObj());
198 }
199
203 struct xwos_br * getXwosObj() { return mBrPtr; }
204};
205
210} // namespace sync
211} // namespace xwos
212
213#endif /* xwos/cxx/sync/Br.hxx */
xwos::Bmp
xwos::sync::Sel
线程栅栏基类
Definition Br.hxx:55
xwer_t bind(Sel< TSelNum > &sel, long pos)
绑定线程栅栏对象到信号选择器
Definition Br.hxx:163
xwer_t unbind(Sel< TSelNum > &sel)
从信号选择器上解绑线程栅栏对象
Definition Br.hxx:195
struct xwos_br * getXwosObj()
获取XWOS对象指针
Definition Br.hxx:203
xwsz_t num()
获取事件的最大数量
Definition Br.hxx:77
struct xwos_br * mBrPtr
Definition Br.hxx:67
WaitMode
等待模式枚举
Definition Br.hxx:60
@ BrWaitTimed
Definition Br.hxx:62
@ BrWaitUninterruptable
Definition Br.hxx:63
xwer_t wait(enum WaitMode mode, xwtm_t to)
等待所有线程到达栅栏
Definition Br.hxx:104
xwer_t bind(Sel< TSelNum > *sel, long pos)
绑定线程栅栏对象到信号选择器
Definition Br.hxx:141
xwer_t unbind(Sel< TSelNum > *sel)
从信号选择器上解绑线程栅栏对象
Definition Br.hxx:179
信号选择器基类
Definition Sel.hxx:55
struct xwos_sel * getXwosObj()
获取XWOS对象指针
Definition Sel.hxx:196
xws64_t xwtm_t
XWOS系统时间 (有符号)
Definition type.h:742
signed long xwer_t
Definition type.h:554
unsigned long xwsz_t
Definition type.h:339
unsigned long xwsq_t
Definition type.h:445
uint32_t xwu32_t
Definition type.h:266
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_unbind(struct xwos_br *br, struct xwos_sel *sel)
XWOS API:从信号选择器上解绑线程栅栏
Definition br.h:303
static xwer_t xwos_br_wait(struct xwos_br *br)
XWOS API:等待所有线程到达栅栏
Definition br.h:337
static xwer_t xwos_br_bind(struct xwos_br *br, struct xwos_sel *sel, xwsq_t pos)
XWOS API:绑定线程栅栏到信号选择器
Definition br.h:286
Definition Bmp.hxx:21
XWOS API:线程栅栏
Definition br.h:83
操作系统抽象层:线程栅栏