【问题标题】:C - Mutex attributesC - 互斥体属性
【发布时间】:2016-11-06 04:15:21
【问题描述】:

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

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

【问题讨论】:

    标签: c mutex recursive-mutex


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 2013-10-08
      相关资源
      最近更新 更多