C - 互斥属性
C - Mutex attributes
我可以只创建并使用一个互斥锁属性来初始化多个递归互斥锁吗?或者我是否必须为我想要创建的每个互斥量创建一个互斥量属性?
基本上我下面的代码正确吗?
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");
}
}
您可以对多个互斥锁使用相同的属性对象。
但是请注意,您正在使用的 pthread_mutexattr_t
对象必须自行初始化。要初始化 pthread_mutexattr_t
,您必须使用 pthread_mutexattr_init
(最终,pthread_mutexattr_destroy
),两者都应该完成 一次。您当前的代码没有进行此类调用,并且应该这样做以符合要求。
我可以只创建并使用一个互斥锁属性来初始化多个递归互斥锁吗?或者我是否必须为我想要创建的每个互斥量创建一个互斥量属性? 基本上我下面的代码正确吗?
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");
}
}
您可以对多个互斥锁使用相同的属性对象。
但是请注意,您正在使用的 pthread_mutexattr_t
对象必须自行初始化。要初始化 pthread_mutexattr_t
,您必须使用 pthread_mutexattr_init
(最终,pthread_mutexattr_destroy
),两者都应该完成 一次。您当前的代码没有进行此类调用,并且应该这样做以符合要求。