pthread_mutex_trylock的问题及解决

来源:互联网 发布:同城交友软件 编辑:程序博客网 时间:2024/06/08 02:27

在需要使用非阻塞的锁时,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){     //锁正在被使用;    ... }


原创粉丝点击