Chinaunix首页 | 论坛 | 博客
  • 博客访问: 503378
  • 博文数量: 174
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 587
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-12 19:39
文章分类

全部博文(174)

文章存档

2018年(2)

2016年(10)

2015年(6)

2014年(31)

2013年(92)

2012年(33)

我的朋友

分类: LINUX

2013-04-12 18:25:34

原文地址:Linux线程锁属性 作者:BIRDCHILD

线程锁属性

1.    PTHREAD_MUTEX_NORMAL

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

2.    PTHREAD_MUTEX_ERRORCHECK

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

3.    PTHREAD_MUTEX_RECURSIVE

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

4.    PTHREAD_MUTEX_DEFALT

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

 

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