Mehrere Prozesse greifen auf gemeinsam genutzten Speicher zu, sperren ihn mit dem Mutex und pthread_mutex_lock()
für die Synchronisation, und jeder Prozess kann jederzeit abgebrochen werden (in der Tat habe ich php-fpm
mit APC
Erweiterung beschrieben, aber das spielt keine Rolle).
Wird der Mutex automatisch entsperrt, wenn der Prozess den Mutex gesperrt hat und dann getötet wurde?
Oder gibt es eine Möglichkeit, es automatisch zu entsperren?Wird Prozess/Thread-Release-Mutex beendet?
Bearbeiten: Wie sich herausstellt, haben Färbeprozesse und Threads ähnliches Verhalten in dieser Situation, die von robust attribute of mutex abhängt.
Dies hängt vom Typ des verwendeten Mutex ab, den Sie nicht angegeben haben. Lochen Sie [robust mutex] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html) in Ihre bevorzugte Suchmaschine. –
Bitte lesen Sie [diese verwandte Frage] (http://stackoverflow.com/questions/7348465/posix-thread-exit-crash-exception-crash-while-holding-mutex) und wie David sagte in robuste Mutexe zu schauen. Sie werden nach einem Absturz nicht entsperrt, aber der nächste Thread, der versucht, sie zu sperren, wird einen "EOWNERDEAD" -Fehlercode erhalten. –
Es wäre schön, eine Antwort darauf zu geben, aber Davids Kommentar ist wahrscheinlich zu knapp, um eine Antwort zu geben, wie sie ist. –