2

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

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

1 に答える 1

2

複数のミューテックスに同じ属性オブジェクトを使用できます。

ただし、pthread_mutexattr_t使用しているオブジェクト自体を初期化する必要があることに注意してください。a を初期化するには(そして最終的には)pthread_mutexattr_tを使用する必要があり、どちらも1 回実行する必要があります。現在のコードはそのような呼び出しを行わないため、準拠するにはそうする必要があります。pthread_mutexattr_initpthread_mutexattr_destroy

于 2016-11-06T04:23:18.887 に答える