2010-08-28 52 views
0

我想盡量更好地理解共享內存同步的問題。我明白,進程間同步可以在不同的操作系統上以不同的方式工作。最大的不同之處在於鎖定共享內存崩潰的進程發生了什麼。在進程崩潰後,Windows自由鎖定了命名互斥體,而linux不釋放它。有人能更好地解釋我的問題,哪些是有利和不利的?如何在linux下免費使用命名互斥或進程崩潰後的進程間信號量?我在互聯網上搜索,但我沒有找到解釋問題和解決方案的人。共享內存鎖定和進程崩潰

我希望有人能幫助我。 對不起,我的英文。

回答

1

Windows的優點是等待的線程被釋放以繼續。缺點是它不知道共享內存的狀態是什麼—崩潰的進程可能是通過更新的一部分。 (視窗由互斥返回WAIT_ABANDONED而非WAIT_OBJECT_0(或偏移從這些彷彿在等待着對多個對象)等待表明這一點。

在實踐中,唯一安全的事情是重置以某種方式共享內存(假設這可以做到有意義)或失敗