Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想为我的问题找到解决方案:我有一些使用共享内存来共享数据的进程。对于同步,我使用互斥锁。但是当锁定互斥锁的进程崩溃时,所有其他进程也会崩溃。那么如何避免这个问题呢?
行为取决于您使用的互斥锁实现(例如 WinAPI、pthreads...)。
例如,在 WinAPI 中,如果一个持有互斥锁的进程在没有释放它的情况下死亡,则等待该互斥锁的其他进程会WAIT_ABANDONED从诸如WaitForSingleObject. 有可能你没有处理它。
WAIT_ABANDONED
WaitForSingleObject
其他库可能有自己的怪癖和实现细节,应该进行相应的审查。
还要确保您谈论的是多进程而不是多线程,因为在单个进程下的多个线程的情况下,在某些实现下,如果该进程的第一个线程死亡 - 该进程中的所有线程也会死亡。