信号量结构体里面的数据成员cout和onwer简单介绍

struct rw_semaphere
{    
    atomic_long_t count;
    atomic_long_t owner;
    xxxx
    xxxx
}

结构体定义如上,通常我们在进行确认当前信号量持锁情况需要进行初步分析下count 跟 owner情况。

count 成员是按照比特位进行划分说明:

比特位范围        含义
bit 0写锁标志位(rwwem_writer_master),若bit0为1,表示当前写着持锁,若为0,表示无写者持有锁
bit1等待队列标志位(rwsem_flag_writers),若bit1为1,表示有读者或者写者正在等待队列中,若为0,表示等待队列为空        
bit2锁转交标志位,为1,表示锁处于转交状态(即已有预定的持锁者,其他线程无法抢占),若为0,表示锁可正常竞争。
bit3-7保留位,暂时预留
bit8-62读者计数器,记录当前持有读锁的读者数量,(最多支持55位,即2^55个读者)
bit63读溢出保护位,为1,表示读者数量过多导致异常(异常状态,禁止新读者进入),正常情况为0

onwer 是基于bit0 进行说明确认。

如果bit0 为1 ,那么owner是写者对应的地址。

如果bit0 为0, 由于多个读者可以持锁特性,不需要说明,如果是分析问题,可以通过crash 的 feach 进行挨着分析每个读者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值