互斥锁的属性大概有如下几种:
PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。当一个线程加锁以后,其余请求锁的线程将形成一个等待队列,并在解锁后按优先级获得锁。这种锁策略保证了资源分配的公平性。
PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。
PTHREAD_MUTEX_ADAPTIVE_NP,适应锁,动作最简单的锁类型,仅等待解锁后重新竞争。
一般来说。嵌套锁的适用性强,因为它支持同个线程多次获取该锁
/* 需加上互斥锁 */
static pthread_mutex_t timer_lock;// = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutexattr_t attr;
int ret;
if(( ret = pthread_mutexattr_init(&attr)) != 0){
fprintf(stderr, "create mutex attribute error. msg:%s", strerror(ret));
exit(1);
}
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&timer_lock, &attr);
最后
以上就是曾经水蜜桃最近收集整理的关于pthread 编程:互斥锁属性的全部内容,更多相关pthread内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复