Ich frage mich, ob die Florida State University Implementierung der Pthread-Standard ist in der Lage, in der Lage, die rekursive Mutexe zu behandeln. Leider ist die Dokumentation über die FSU-Implementierung eher dürftig und erwähnt nicht die Möglichkeit oder nicht, einen Mutex als rekursiv zu deklarieren.Rekursive Mutex mit FSU Pthread Implementierung
Der Versuch, einen Mutex zu erklären, wie folgt:
pthread_mutex_attr mutex_attr;
pthread_mutexattr_init (&mutex_attr);
pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&mutex, NULL);
und pthreads-Bibliothek mit der FSU kompilieren, habe ich diese Liste von Fehlern:
test.c:25: error: `pthread_mutex_attr' undeclared (first use in this function)
test.c:25: error: (Each undeclared identifier is reported only once
test.c:25: error: for each function it appears in.)
test.c:25: error: parse error before "mutex_attr"
test.c:27: error: `mutex_attr' undeclared (first use in this function)
test.c:28: error: `PTHREAD_MUTEX_RECURSIVE' undeclared (first use in this function)
Der Versuch, den gleichen Code mit der kompilieren (Nicht-FSU) Pthread-Implementierung auf meiner Maschine, es funktioniert.
Um Nebensächlichkeiten zu vermeiden, erkläre ich Ihnen im Voraus, dass die POSIX Mutexe standardmäßig nicht rekursiv sind.
Sollte ich schlussfolgern, dass es keine Möglichkeit gibt, rekursive Mutexe mit der FSU-Implementierung zu verwenden, oder gibt es eine andere Möglichkeit, diese zu erreichen (d. H. Eine andere Möglichkeit, einen Mutex als rekursiv zu deklarieren)?
Der Typ ist 'Pthread_mutex_attr_t' Beachten Sie die _t. –
Ben, Sie haben Recht, in der Tat war der Code, den ich schrieb, nur ein Versuch, die Ausgabe des Compilers zu bekommen .. Der ursprüngliche Code war korrekt :) –