共享内存锁定和进程崩溃
Posted
技术标签:
【中文标题】共享内存锁定和进程崩溃【英文标题】:shared memory locking and process crash 【发布时间】:2010-08-28 12:33:41 【问题描述】:我想尝试更好地理解共享内存的同步问题。我已经了解进程间同步在不同的操作系统上可以以不同的方式工作。最大的区别是当锁定共享内存的进程崩溃时会发生什么。 Windows 在进程崩溃后释放锁定的命名互斥锁,而 linux 不释放它。有人可以更好地解释我的问题,哪些是优势和劣势?在 linux 下,如何在进程崩溃后释放命名互斥锁或进程间信号量?我在网上搜索过,但没有找到能很好地解释问题和解决方案的人。
我希望有人可以帮助我。 对不起我的英语。
【问题讨论】:
【参考方案1】:Windows 的优点是等待线程被释放以继续。缺点是它不知道共享内存的状态是什么——崩溃的进程可能是更新的一部分。 (Windows 通过等待互斥体返回 WAIT_ABANDONED
而不是 WAIT_OBJECT_0
来表明这一点(如果等待多个对象,则从这些偏移)。
实际上,唯一安全的做法是以某种方式重置共享内存(假设可以有意义地完成)或失败。
【讨论】:
以上是关于共享内存锁定和进程崩溃的主要内容,如果未能解决你的问题,请参考以下文章