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");
}
}
1 ответ
Решение
Вы можете использовать один и тот же объект атрибута для нескольких мьютексов.
Обратите внимание, что pthread_mutexattr_t
используемый вами объект должен быть инициализирован сам. Для инициализации pthread_mutexattr_t
ты должен использовать pthread_mutexattr_init
(и в конце концов, pthread_mutexattr_destroy
), оба из которых должны быть сделаны один раз. Ваш текущий код не делает таких вызовов, и должен сделать это, чтобы быть совместимым.