分类: 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标准规定, 对于某一个具体的实现, 可以把这种类型的互斥锁定义为其他类型的互斥锁.