pthread_mutex_trylock的问题及解决

在需要使用非阻塞的锁时,trylock是一个比较好的选择,但是使用的时候碰见了一些问题:

需要使用PTHREAD_MUTEX_ERRORCHECK_NP来定义一个检错锁,但是不管如何都编译不过。即使在编译的时候加入-D_GNU_SOURCE也一样会提示没有定义。迫于无奈,采用了麻烦一些的初始化方式:

            pthread_mutexattr_t ma; 
            pthread_mutexattr_init(&ma);
            pthread_mutexattr_settype(&ma,PTHREAD_MUTEX_ERRORCHECK);
            pthread_mutex_init(&_ctr_data_lock, &ma);
            pthread_mutexattr_destroy(&ma);

pthread_mutex_trylock的使用还是比较简单(希望使用没错。。。),简单的应用如下:

ret = pthread_mutex_trylock(p_ctr_data_lock);
if (0 == ret) {
    //the lock isnt used 
    //如果被锁定 
    ... 
    pthread_mutex_unlock(p_ctr_data_lock);
} else if(EBUSY == ret){ 
    //锁正在被使用;
    ... 
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值