C - Mutex属性

时间:2016-11-06 04:15:21

标签: c mutex recursive-mutex

我是否可以仅创建和使用一个互斥锁属性来初始化多个递归互斥锁?或者我是否必须为我想要创建的每个互斥锁创建一个互斥锁属性? 基本上我以下代码是否正确?

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");
    }
}

1 个答案:

答案 0 :(得分:2)

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

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