2016-11-06 180 views
2

我可以創建並使用只有一個互斥鎖屬性來初始化多個遞歸互斥鎖嗎?或者我必須爲每個我想創建的互斥體創建一個互斥屬性? 基本上我下面的代碼是正確的?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"); 
    } 
} 

回答

2

對於多個互斥對象,您可以使用相同的屬性對象。

但請注意,您使用的pthread_mutexattr_t對象必須進行初始化。要初始化pthread_mutexattr_t,您必須使用pthread_mutexattr_init(最終爲pthread_mutexattr_destroy),兩者均應完成一次。您當前的代碼不會進行此類調用,並且應該這樣做才能符合規定。