我是否可以仅创建和使用一个互斥锁属性来初始化多个递归互斥锁?或者我是否必须为我想要创建的每个互斥锁创建一个互斥锁属性? 基本上我以下代码是否正确?
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");
}
}
答案 0 :(得分:2)
您可以为多个互斥锁使用相同的属性对象。
但请注意,您使用的pthread_mutexattr_t
对象必须自行初始化。要初始化pthread_mutexattr_t
,您必须使用pthread_mutexattr_init
(最终,pthread_mutexattr_destroy
),这两项都应该一次。您当前的代码不会进行此类调用,并且应该这样做才能符合要求。