原文:
http://blog.csdn.net/onlyou930/article/details/6432206
各种Mutex的区别如下表:
锁类型 |
初始化方式 |
加解锁特征 |
调度特征 |
普通锁 |
PTHREAD_MUTEX_INITIALIZER |
同一线程可重复加锁,解锁一次释放锁 |
先等待锁的进程先获得锁 |
嵌套锁 |
PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP |
同一线程可重复加锁,解锁同样次数才可释放锁 |
先等待锁的进程先获得锁 |
纠错锁 |
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP |
同一线程不能重复加锁,加上的锁只能由本线程解锁 |
先等待锁的进程先获得锁 |
自适应锁 |
PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP |
同一线程可重加锁,解锁一次生效 |
所有等待锁的线程自由竞争 |
windows支持的锁
PTHREAD_MUTEX_RECURSIVE_NP 即嵌套锁
linux支持的锁
PTHREAD_MUTEX_FAST_NP 即 普通锁
PTHREAD_MUTEX_RECURSIVE_NP 即嵌套锁
PTHREAD_MUTEX_ERRORCHECK_NP 即纠错锁
OS_APPLE || OS_S60 || OS_ANDROID支持的锁
PTHREAD_MUTEX_NORMAL 即普通锁
PTHREAD_MUTEX_RECURSIVE 即嵌套锁
PTHREAD_MUTEX_ERRORCHECK 即纠错锁