歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 信號量操作函數中的SEM_UNDO

信號量操作函數中的SEM_UNDO

日期:2017/3/3 11:10:06   编辑:Linux技術

每一個獨立的信號燈操作可能都需要維護一個調整動作。 Linux 至少為每一個進程

的每一個信號燈數組都維護一個 sem_undo 的數據結構。如果請求的進程沒有,就在需

要的時候為它創建一個。這個新的 sem_undo 數據結構同時在進程的 task_struct 數據

結構和信號燈隊列的 semid_ds 數據結構的隊列中排隊。對信號燈隊列中的信號燈執行

操作的時候,和這個操作值相抵消的值加到這個進程的 sem_undo 數據結構的調整隊列

這個信號燈的條目上。所以,如果操作值為 2 ,那麼這個就在這個信號燈的調整條目上

增加 -2 。

當進程被刪除,比如退出的時候, Linux 遍歷它的 sem_undo 數據結構組,並

實施對於信號燈數組的調整。如果刪除信號燈,它的 sem_undo 數據結構仍舊停留在進

程的 task_struct 隊列中,但是相應的信號燈數組標識符標記為無效。這種情況下,清除

信號燈的代碼只是簡單地廢棄這個 sem_undo 數據結構。

Copyright © Linux教程網 All Rights Reserved