我有一個在多個生產者和多個消費者之間共享的隊列資源。所有都是獨立的過程;沒有一個進程「擁有」隊列。多進程同步 - 比信號量更好的選擇?
實現的性質必須控制對隊列的訪問,並且只有一個進程必須被允許在任何給定時刻推送或彈出。
我覺得使用POSIX命名的信號量是正確的解決方案,然而一些細節卻困擾着我。 (這是一個Linux的實現,順便說一句。)
當(如果有的話)我應該做一個sem_unlink嗎?是否有任何理由實際刪除隊列?
我很擔心在鎖住隊列信號的同時死亡的進程。有沒有什麼好辦法解決這個問題?我可以在嘗試獲取鎖定時進行定時等待,但如果超時過期,我現在已經有了競爭狀態。
是否有像這樣的簡單二進制鎖的更好的解決方案?也許一個使用fcntl和/或exclusive的鎖定文件打開?
這些是基於服務的應用程序,所以「KillNotes」(我已經多次使用過!)在這裏不起作用,但是感謝您的建議。 – Joe 2009-08-30 16:45:10
建議實際上是使用文件鎖定。 KillNotes等家務管理系統的必要性使我避開使用sempahores。 – djna 2009-08-30 17:23:03
對不起,我瞭解你的意圖,只是不清楚我的迴應。 – Joe 2009-08-31 02:16:06