问题
Several processes access shared memory, locking it with the mutex and pthread_mutex_lock()
for synchronization, and each process can be killed at any moment (in fact I described php-fpm
with APC
extension, but it doesn't matter).
Will the mutex be unlocked automatically, if the process locked the mutex and then was killed?
Or is there a way to unlock it automatically?
Edit: As it turns out, dying processes and threads have similar behavior in this situation, which depends on robust attribute of mutex.
回答1:
That depends on the type of mutex. A "robust" mutex will survive the death of the thread/process. See this question: POSIX thread exit/crash/exception-crash while holding mutex
The next thread that will attempt to lock it will receive a EOWNERDEAD
error code
Note: Collected information from the comments.
来源:https://stackoverflow.com/questions/26104921/will-killed-process-thread-release-mutex