我正在開發一種在Linux上使用共享內存的兩個或多個進程之間交換數據的機制。問題是需要一定程度的併發控制來保持共享內存本身的數據完整性,並且正如我在某個時間或其他地方所指出的那樣,我的進程可能會被殺死/崩潰,所以常見的鎖機制不工作,因爲它們可能會留下內存處於「鎖定」狀態並在臨終之後,使其他進程等待鎖被釋放。共享內存一致性的鎖定機制
因此,做了一些研究後,我發現System V信號量有一個名爲SEM_UNDO的標誌,當程序失敗時它可以恢復鎖定狀態,但這並不保證能正常工作。另一種選擇是監視可能使用共享內存的所有進程的PID,並在發生不愉快事件時對其進行一些控制,但我不確定這是否是解決我的問題的正確方法。
任何想法?? :)
編輯:爲了解釋的目的,我們的應用程序需要某種類型的IPC機制儘可能最小的延遲。所以,我也開放了可以處理這一要求的機制。
另一種方法是不使用共享內存 - 我從來沒有理解它似乎對程序員的可怕魅力。還有很多其他的IPC機制(一些在共享內存上預先構建和測試過),那麼爲什麼不使用它們呢? – 2010-06-18 15:07:18
爲了表現。我們的應用程序需要處理微秒級的延遲。有IPC機制可以實現這種性能? – scooterman 2010-06-18 16:42:04
@scooterman您正在使用哪種實時Linux變體? – 2010-06-18 16:47:59