pthread_rwlock_t成员含义

记录一下以防忘记
glibc-2.23/sysdeps/x86/bits/pthreadtypes.h

typedef union
{
  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;
    int __writer;
    int __shared;
    signed char __rwelision;
    unsigned long int __pad2;
    /* FLAGS must stay at this position in the structure to maintain
       binary compatibility.  */
    unsigned int __flags;
# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED    1
  } __data;
  char __size[__SIZEOF_PTHREAD_RWLOCK_T];
  long int __align;
} pthread_rwlock_t;

字段含义:
__nr_readers字段表示当前有多少个reader正在使用lock;

__readers_wakeup字段表示需要被唤醒的reader的个数;

__writer_wakeup字段表示需要被唤醒的writer的个数;

__nr_readers_queued字段表示正在排队等待锁的reader个数;

__nr_writers_queued字段表示正在排队等待锁的writer的个数;

__writer字段表示正在使用锁的writer的线程id,用来防止死锁;

列子:
在这里插入图片描述
在这里插入图片描述

其中__writer字段的比较重要,可以用来查死锁时是在等哪个线程, mutex 锁中对应的字段是__owner

参考:
https://cloud.tencent.com/developer/article/1087263

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值