Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109066
  • 博文数量: 19
  • 博客积分: 1716
  • 博客等级: 上尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-25 14:03
文章分类

全部博文(19)

文章存档

2011年(8)

2010年(11)

我的朋友

分类: LINUX

2011-03-03 11:05:53

线程锁属性

1.    PTHREAD_MUTEX_NORMAL

此类属性的线程锁不提供死锁检测, 尝试重复锁定会导致死锁. 如果由另外的线程(非锁定该互斥锁的线程)进行解锁将引发不可预料的后果.

2.    PTHREAD_MUTEX_ERRORCHECK

此类属性的线程锁会自动检测死锁, 提供错误检查. 尝试重复锁定会返回错误. 如果由另外的线程(非锁定该互斥锁的线程)进行解锁将返回一个错误代码.

3.    PTHREAD_MUTEX_RECURSIVE

此类属性的线程锁可以重复上锁, 而不会引起死锁. 并保留锁定计数器的概念. 一个线程对该类互斥锁重复上锁, 则必须由该线程来重复相同数量的解锁操作才能解开该互斥锁. 当锁定计数器为0, 才可以供其他线程使用. 如果尝试解锁一个由别的线程锁定的互斥锁, 将返回一个错误代码. 此类互斥锁只能是进程私有的(PTHREAD_PROCESS_PRIVATE).

4.    PTHREAD_MUTEX_DEFALT

此类属性的线程锁不会自动检测死锁. 尝试重复锁定会导致不可预料的后果. 如果由另外的线程(非锁定该互斥锁的线程)解锁, 会导致不可预料的后果. POSIX标准规定, 对于某一个具体的实现, 可以把这种类型的互斥锁定义为其他类型的互斥锁.

 

阅读(1895) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~