从手册页:
pthread_mutex_init()
函数应使用attr指定的属性初始化互斥锁引用的互斥锁。
如果attr为NULL,则使用默认的互斥锁属性; 效果应与传递默认互斥锁属性对象的地址相同。初始化成功后,互斥锁的状态将被初始化并解锁。
默认互斥锁属性是什么?
使用此代码设置的内容:pthread_mutex_t mutexLock = PTHREAD_MUTEX_INITIALIZER;
?
答案 0 :(得分:2)
您必须深入了解POSIX规范以获取互斥锁属性的默认值:
PTHREAD_MUTEX_DEFAULT
尝试以递归方式锁定此类型的互斥锁会导致 未定义的行为。试图解锁这种类型的互斥锁 未被调用线程锁定导致未定义的行为。 尝试解锁未锁定的此类型的互斥锁会导致结果 在未定义的行为。允许实现映射此互斥锁 其中一种互斥体类型。
请注意,这可能与其他互斥锁类型不同,但可以映射到PTHREAD_MUTEX_NORMAL
或PTHREAD_MUTEX_ERRORCHECK
。
pthread_mutexattr_setpshared()
属性的默认值为
PTHREAD_PROCESS_PRIVATE
。
对于其他属性,规格似乎没有明确说明。这些属性是:
pthread_mutexattr_getprioceiling()
)pthread_mutexattr_getprotocol()
)答案 1 :(得分:0)
点击此链接:http://www.sourceware.org/pthreads-win32/manual/pthread_mutex_init.html
pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
pthread_mutex_t errchkmutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER;
pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
pthread_mutex_t errchkmutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;