Я использую pthread_mutex_t, чтобы синхронизировать доступ к ресурсу между несколькими процессами, которые находятся на одном уровне (т. Е. Не существует отношения родительский/дочерний).pthread_mutex_t в нескольких процессах ... кто его уничтожает?
Как определить, когда можно безопасно вызвать pthread_mutex_destroy? Единственный способ, с помощью которого я могу определить, используется ли мьютекс другим процессом без введения условия гонки, - это ввести другой мьютекс.
«Я использую pthread_mutex_t ... между несколькими процессами ". Я нахожу это маловероятным, поскольку мьютексы PThreads являются локальными для отдельных процессов. Возможно, вы думаете о мьютексах SYSV или о другой реализации? – twalberg
Вы создаете их в общей памяти и вызываете pthread_mutexattr_setpshared с PTHREAD_PROCESS_SHARED – user109078
В этом случае он, вероятно, небезопасен, пока вы не сможете: 1) гарантировать, что он не заблокирован или 2) гарантировать, что этот процесс является единственным, который все еще подключен к этому сегменту разделяемой памяти. Если есть другие связанные процессы, или если у вас нет способа сказать, заблокирован ли он, тогда уничтожение может привести к плохим вещам ... – twalberg