2016-11-06 156 views
2

我可以创建并使用只有一个互斥锁属性来初始化多个递归互斥锁吗?或者我必须为每个我想创建的互斥体创建一个互斥属性? 基本上我下面的代码是正确的?C - 互斥锁属性

int err; 
int bufferLength = 10; 
pthread_mutexattr_t recursiveAttr; 
pthread_mutex_t mutexes[bufferLength]; 

for(int index = 0; index < bufferLength; index++){ 
    err = pthread_mutex_init(&mutexes[i], &recursiveAttr); 
    if(err != 0){ 
     perror("Error initializing the mutex"); 
    } 
} 

回答

2

对于多个互斥对象,您可以使用相同的属性对象。

但请注意,您使用的pthread_mutexattr_t对象必须进行初始化。要初始化pthread_mutexattr_t,您必须使用pthread_mutexattr_init(最终为pthread_mutexattr_destroy),两者均应完成一次。您当前的代码不会进行此类调用,并且应该这样做才能符合规定。