2

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

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

1 回答 1

2

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

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

于 2016-11-06T04:23:18.887 回答