2016-11-06 3 views
2

Kann ich nur ein Mutex-Attribut erstellen und verwenden, um mehrere rekursive Mutexe zu initialisieren? Oder muss ich für jeden Mutex, den ich erstellen möchte, ein Mutex-Attribut erstellen? Grundsätzlich stimmt der folgende Code?C - Mutex-Attribute

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

Antwort

2

Sie können das gleiche Attributobjekt für mehrere Mutexe verwenden.

Beachten Sie jedoch, dass das pthread_mutexattr_t Objekt, das Sie verwenden, selbst initialisiert werden muss. Um eine pthread_mutexattr_t zu initialisieren, müssen Sie pthread_mutexattr_init (und eventuell pthread_mutexattr_destroy) verwenden, die beide einmal getan werden sollten. Ihr aktueller Code macht keine solchen Anrufe und sollte dies tun, um kompatibel zu sein.