名称
pthread_mutexattr_init, pthread_mutexattr_destroy, pthread_mutexattr_settype,
pthread_mutexattr_gettype – 创建互斥体属性
大纲
#include
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind);
int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *kind);
描述
互斥体的属性在可以通过当作pthread_mutex_init的第二个参数指给创建的互斥体。如果这个传递空指针,互斥体用默认值创建互斥体。
pthread_mutexattr_init初始化attr并且给它赋予默认值。
pthread_mutexattr_destroy销毁一个属性对象,在重新进行初始化之前该结构不能重新使用。在LinuxThreads中它不作任何事。
LinuxThreads只支持一种互斥体属性:互斥体的类型,fast类型的互斥体值为PTHREAD_MUTEX_FAST_NP,recursive类型的互斥体值为PTHREAD_MUTEX_RECURSIVE_NP,error checking类型的互斥体值为PTHREAD_MUTEX_ERRORCHECK_NP。就像NP后缀暗示的那样,这是POSIX标准的不可移植的扩展,不应该出现在将要进行移植的程序中。
互斥体的类型决定当线程要锁定一个已经被它自己锁定的互斥体时会发生什么。fast类型只是简单的永远将这个线程挂起。error checking类型的互斥体会立即返回一个错误码EDEADLK。否则的话,返回立即成功返回。在互斥体中会记录这个线程对互斥体进行了多少次锁定,想要真正释放这个互斥体也就必须调用相同次数的pthread_mutex_unlock。
它的默认值是fast类型,值为PTHREAD_MUTEX_FAST_NP。
pthread_mutexattr_settype使用kind的值对attr赋值。
返回值
pthread_mutexattr_init, pthread_mutexattr_destroy and pthread_mutexattr_gettype总是返回0。
pthread_mutexattr_settype在成功时返回0,在出错时返回非零的出错码。
错误码
在出错的时候,pthread_mutexattr_settype返回下面的返回值:
EINVAL:kind的值不是PTHREAD_MUTEX_FAST_NP,PTHREAD_MUTEX_RECURSIVE_NP或PTHREAD_MUTEX_ERRORCHECK_NP之一。
pthread_mutexattr --POSIX THREAD
最新推荐文章于 2023-07-21 17:15:31 发布