各种Mutex(互斥量)的区别

来源:互联网 发布:vscode golang 编译 编辑:程序博客网 时间:2024/05/16 12:39
原文: 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 即纠错锁
原创粉丝点击