2016-11-06 7 views
2

mutex属性を1つだけ作成して使用して、複数の再帰的mutexを初期化できますか?または、作成したいミューテックスごとに1つのミューテックス属性を作成する必要がありますか? 基本的に私は次のコードは正しいですか?C - mutex属性

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)を使用する必要があります。どちらもとする必要があります。現在のコードではこのような呼び出しは行われず、準拠する必要があります。