2013-02-01 59 views
1

从手册页:什么是默认互斥量属性?

pthread_mutex_init()功能应通过初始化互斥与attr指定属性引用的互斥锁。
如果attr为NULL,则使用默认的互斥量属性;效果应该与传递默认互斥对象的地址相同。初始化成功后,互斥锁的状态将被初始化并解锁。

什么是默认的互斥锁属性?
使用此代码设置的内容:pthread_mutex_t mutexLock = PTHREAD_MUTEX_INITIALIZER;

回答

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; 
2

你要挖围绕在矿井POSIX规范以获取互斥默认属性:

  • pthread_mutexattr_settype()

    PTHREAD_MUTEX_DEFAULT

    试图递归锁定此类型的互斥锁导致 未定义的行为。试图解锁这种类型的互斥体,其中 未被调用线程锁定导致未定义的行为。 试图解锁未锁定的此类型的互斥结果导致 处于未定义的行为状态。允许实现将此互斥体 映射到其他互斥体类型之一。

    注意,这可能是从其他的互斥锁类型不同,但它可以映射到PTHREAD_MUTEX_NORMALPTHREAD_MUTEX_ERRORCHECK

  • pthread_mutexattr_setpshared()

    该属性的缺省值是PTHREAD_PROCESS_PRIVATE

对于其他属性,规格似乎并不清楚状态。这些属性是:

相关问题