设置互斥锁的类型

来源:互联网 发布:泰国有4g网络吗 编辑:程序博客网 时间:2024/05/16 06:21
  类型:
   缺省的互斥锁类型属性是:
   PTHREAD_MUTEX_DEFAULT。

   合法的类型属性值有:   
   PTHREAD_MUTEX_NORMAL:
   >: 这种类型的互斥锁不会自动检测死锁。
   >: 如果一个线程试图对一个互斥锁重复锁定,将会引起这个线程的死锁。
   >: 如果试图解锁一个由别的线程锁定的互斥锁会引发不可预料的结果。
   >: 如果一个线程试图解锁已经被解锁的互斥锁也会引发不可预料的结果。
   
   PTHREAD_MUTEX_ERRORCHECK:
   >: 这种类型的互斥锁会自动检测死锁。
   >: 如果一个线程试图对一个互斥锁重复锁定,将会返回一个错误代码。
   >: 如果试图解锁一个由别的线程锁定的互斥锁将会返回一个错误代码。
   >: 如果一个线程试图解锁已经被解锁的互斥锁也将会返回一个错误代码。
   
   PTHREAD_MUTEX_RECURSIVE:
   >: 如果一个线程对这种类型的互斥锁重复上锁,不会引起死锁。
   >: 一个线程对这类互斥锁的多次重复上锁必须由这个线程来重复相同数量的解
     锁,这样才能解开这个互斥锁,别的线程才能得到这个互斥锁。
   >: 如果试图解锁一个由别的线程锁定的互斥锁将会返回一个错误代码。
   >: 如果一个线程试图解锁已经被解锁的互斥锁也将会返回一个错误代码。
   >: 这种类型的互斥锁只能是进程私有的(作用域属性为
      PTHREAD_PROCESS_PRIVATE)
   
   PTHREAD_MUTEX_DEFAULT:
   >: 这种类型的互斥锁不会自动检测死锁。
   >: 如果一个线程试图对一个互斥锁重复锁定,将会引起不可预料的结果。
   >: 如果试图解锁一个由别的线程锁定的互斥锁会引发不可预料的结果。
   >: 如果一个线程试图解锁已经被解锁的互斥锁也会引发不可预料的结果。
   >: POSIX标准规定,对于某一具体的实现,可以把这种类型的互斥锁定义为其他

      类型的互斥锁。

#include<pthread.h>
    #intpthread_mutexattr_settype (pthread_mutexattr_t * attr, intkind);
   //!> 设置类型互斥类型
    #intpthread_mutexattr_gettype (pthread_mutexattr_t * attr, int *kind);
   //!> 获得类型互斥属性
   若成功返回0,若失败返回错误编号。


0 0
原创粉丝点击