pthread 编程:互斥锁属性

来源:互联网 发布:无主之地2 mac汉化 编辑:程序博客网 时间:2024/05/22 16:52

互斥锁的属性大概有如下几种:

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);
0 0
原创粉丝点击