pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__Besitzer == 0' failed
Erhielt ich den Fehler:
pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->_Daten._owner == 0' failed.
Und ich kann nicht finden jede Ursache. Aber ich bin mir nicht sicher über das folgende Stück code:
Erklärungen:
std::mutex lock;
std::condition_variable cond;
Reihenfolge der locks & entriegelt:
std::unique_lock<std::mutex> lk(lock);
cond.wait(lk);
lock.unlock();
Wenn ich zu entfernen dieses Sequenz - alles funktioniert gut, aber ohne jeglichen Schutz. Ich bin mir nicht sicher, ob ich unique_lock
richtig.
- Für die Zukunft, bitte versuchen Sie es zu post kurze, aber vollständige Programme - sscce.org 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
std::unique_lock
und die anderen Schlösser erwerben eine mutex im Konstruktor und gibt Sie im Destruktor.Sie rief
lock.unlock()
im code manuell, so dass es genannt wird, effektiv zweimal.Nach dem entfernen dieser Aussage sollte Ihr code richtig funktioniert.
lk.unlock()
, so dass die Sperre weiß, dass der mutex entsperrt wurde. (Und vielleicht rufen Sie den mutex etwas anderes als "lock", so dass Sie nicht zu verwechseln mit einer Sperre).