XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
xwos::lock::Seqlock::TryWrLkBhGrd类 参考

独占写中断底半部尝试上锁模式下的顺序锁RAII机制守卫 更多...

#include <Seqlock.hxx>

类 xwos::lock::Seqlock::TryWrLkBhGrd 继承关系图:
xwos::lock::Seqlock::TryWrLkBhGrd 的协作图:

Public 成员函数

 TryWrLkBhGrd (Seqlock *seqlock)
 构造顺序锁的RAII机制守卫
 
 TryWrLkBhGrd (Seqlock &seqlock)
 构造顺序锁的RAII机制守卫
 
 ~TryWrLkBhGrd ()
 析构顺序锁的RAII机制守卫
 
xwer_t getRc ()
 获取上锁结果错误码
 
- Public 成员函数 继承自 xwos::lock::Seqlock::WrLkBhGrd
 WrLkBhGrd (Seqlock *seqlock)
 构造顺序锁的RAII机制守卫
 
 WrLkBhGrd (Seqlock &seqlock)
 构造顺序锁的RAII机制守卫
 
 ~WrLkBhGrd ()
 析构顺序锁的RAII机制守卫
 
enum LockStatus getStatus ()
 获取锁状态
 
xwer_t wait (sync::Cond *cond)
 等待条件量
 
xwer_t wait (sync::Cond &cond)
 等待条件量
 
xwer_t wait (sync::Cond *cond, xwtm_t to)
 限时等待条件量
 
xwer_t wait (sync::Cond &cond, xwtm_t to)
 限时等待条件量
 

Private 属性

xwer_t mRc
 

额外继承的成员函数

- Protected 成员函数 继承自 xwos::lock::Seqlock::WrLkBhGrd
 WrLkBhGrd ()
 
- Protected 属性 继承自 xwos::lock::Seqlock::WrLkBhGrd
SeqlockmSeqlock
 
enum LockStatus mStatus
 

详细描述

独占写中断底半部尝试上锁模式下的顺序锁RAII机制守卫

  • 构造函数关闭当前CPU调度器的抢占,关闭本地CPU的中断底半部, 然后尝试上锁顺序锁。 上锁失败不会自旋等待,会开启当前CPU调度器的抢占,开启本地CPU的中断底半部, 并在 mRc 中返回 -EAGAIN
  • 析构函数解锁顺序锁,开启本地CPU的中断底半部,开启当前CPU调度器的抢占。
    注解
  • 上下文:线程、中断底半部

在文件 Seqlock.hxx1555 行定义.

构造及析构函数说明

◆ TryWrLkBhGrd() [1/2]

xwos::lock::Seqlock::TryWrLkBhGrd::TryWrLkBhGrd ( Seqlock seqlock)

构造顺序锁的RAII机制守卫

参数
[in]seqlock顺序锁对象指针

在文件 Seqlock.cxx740 行定义.

741 : WrLkBhGrd()
742{
743 mSeqlock = seqlock;
744 if (nullptr != mSeqlock) {
746 if (XWOK != mRc) {
747 mSeqlock = nullptr;
748 }
749 }
750}
struct xwos_sqlk mLock
Definition Seqlock.hxx:1753
#define XWOK
No error
Definition errno.h:182
static xwer_t xwos_sqlk_wr_trylock_bh(struct xwos_sqlk *sql)
XWOS API:尝试开启写临界区,关闭本地CPU的中断底半部
Definition seqlock.h:768
函数调用图:

◆ TryWrLkBhGrd() [2/2]

xwos::lock::Seqlock::TryWrLkBhGrd::TryWrLkBhGrd ( Seqlock seqlock)

构造顺序锁的RAII机制守卫

参数
[in]seqlock顺序锁对象引用

在文件 Seqlock.cxx752 行定义.

753 : WrLkBhGrd()
754{
755 mSeqlock = &seqlock;
756 if (nullptr != mSeqlock) {
758 if (XWOK != mRc) {
759 mSeqlock = nullptr;
760 }
761 }
762}
函数调用图:

◆ ~TryWrLkBhGrd()

xwos::lock::Seqlock::TryWrLkBhGrd::~TryWrLkBhGrd ( )
inline

析构顺序锁的RAII机制守卫

在文件 Seqlock.hxx1577 行定义.

1577{}

成员函数说明

◆ getRc()

xwer_t xwos::lock::Seqlock::TryWrLkBhGrd::getRc ( )
inline

获取上锁结果错误码

返回
错误码
返回值
XWOK没有错误
-EAGAIN获得顺序锁失败

在文件 Seqlock.hxx1585 行定义.

1585{ return mRc; }

结构体成员变量说明

◆ mRc

xwer_t xwos::lock::Seqlock::TryWrLkBhGrd::mRc
private

尝试上锁的结果

在文件 Seqlock.hxx1559 行定义.


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