我想为我的问题找到解决方案:我有一些使用共享内存来共享数据的进程。为了同步,我使用互斥锁。但是当一个锁定互斥锁的进程崩溃时,所有其他进程也会崩溃。那么如何避免这个问题?
答案 0 :(得分:0)
行为取决于您使用的互斥锁实现(例如WinAPI,pthreads ......)。
例如,在WinAPI中,如果持有互斥锁的进程在没有释放的情况下死亡,则等待该互斥锁的其他进程会从WAIT_ABANDONED
等函数收到返回值WaitForSingleObject
。你可能没有处理它。
其他图书馆可能有自己的怪癖和实施细节,应该进行相应的审核。
还要确保你谈论的是多进程而不是多个therads,因为在单个进程下有多个线程的情况下,在某些实现中,如果该进程的第一个线程死掉 - 所有线程都在那个过程。