天天看點

APUE-從SystemV IPC可以學到的設計思路

1. 既然消息隊列、信号量、共享記憶體都有控制資料(結構體),提供一個控制函數對該控制資料進行讀寫,并且通過一個參數int cmd來決定對該控制資料執行什麼控制操作,而且不同的cmd可以有傳回值,可以無傳回值。增加函數的靈活度。

2. 根據函數的參數,決定是建立一個新的還是打開一個既存的。可以避免把函數寫死或寫兩個函數:建立函數和打開函數。

3. 函數執行的過程,通過設定類似errno的值,解釋發生了什麼錯誤。

4. 可以給函數設定一個flag形參,擴充函數的功能,避免寫多個函數實作。比如根據該flag值,設定該函數是阻塞的還是非阻塞的(非阻塞而且資源不夠用時,直接出錯傳回)。

5. 參數的正負值可以表示兩種狀态資訊,同時表示值的資訊。而且0值可以表示另一種狀态。

6. 如果函數阻塞,需要考慮程序捕捉到一個信号,并且從該信号處理程式中傳回,阻塞是否會被中斷。如果被中斷是否需要設定類似errno的值。

7. 調用的函數需不需要是原子性的。

繼續閱讀