2010-08-28 28 views
0

我想尽量更好地理解共享内存同步的问题。我明白,进程间同步可以在不同的操作系统上以不同的方式工作。最大的不同之处在于锁定共享内存崩溃的进程发生了什么。在进程崩溃后,Windows自由锁定了命名互斥体,而linux不释放它。有人能更好地解释我的问题,哪些是有利和不利的?如何在linux下免费使用命名互斥或进程崩溃后的进程间信号量?我在互联网上搜索,但我没有找到解释问题和解决方案的人。共享内存锁定和进程崩溃

我希望有人能帮助我。 对不起,我的英文。

回答

1

Windows的优点是等待的线程被释放以继续。缺点是它不知道共享内存的状态是什么—崩溃的进程可能是通过更新的一部分。 (视窗由互斥返回WAIT_ABANDONED而非WAIT_OBJECT_0(或偏移从这些仿佛在等待着对多个对象)等待表明这一点。

在实践中,唯一安全的事情是重置以某种方式共享内存(假设这可以做到有意义)或失败