1

我想尝试更好地理解共享内存同步的问题。我已经了解进程间同步在不同的操作系统上的工作方式不同。最大的区别是当锁定共享内存的进程崩溃时会发生什么。Windows 在进程崩溃后释放锁定的命名互斥锁,而 linux 不释放它。有人可以更好地解释我的问题,哪些是优势和劣势?在 linux 下,如何在进程崩溃后释放命名互斥锁或进程间信号量?我在互联网上搜索过,但没有找到能很好地解释问题和解决方案的人。

我希望有人能帮助我。对不起我的英语不好。

4

1 回答 1

1

Windows 的优点是等待线程被释放以继续。缺点是它不知道共享内存的状态是什么——崩溃的进程可能是更新的一部分。(Windows 通过等待互斥体返回WAIT_ABANDONED而不是WAIT_OBJECT_0(或者如果在多个对象上等待则从这些偏移)来指示这一点。

实际上,唯一安全的做法是以某种方式重置共享内存(假设可以有意义地完成)或失败。

于 2010-08-28T12:46:12.310 回答