2012-06-20 61 views
4

我有興趣在共享內存中使用信號量(使用semaphore_create(task, sem, policy, value)mach/semaphore.h創建)來同步Mac OS中的兩個進程。Mach信號量是否在進程間的共享內存中工作?

我知道在Linux上使用sem_init(sem, pshared, value)pshared必須是在這種情況下不爲零,但我無法找到和信息在Mac(其中sem_init未實現),我真的不希望使用命名信號作爲我需要創造很多。

我在一個最小的例子上進行了實驗,它似乎沒有工作,所以我想知道如果我做錯了什麼或它不工作。我也接受其他進程間鎖定替代方案。

+2

[Here](http://pkaudio.blogspot.de/2010/05/mac-os-x-no -timed-semaphore-waits.html)是一篇關於如何在進程之間共享Mach信號量的文章。請注意,您應該儘量避免使用Mach,因爲它在userland中的用法已被棄用。 –

回答

0

OSX不支持匿名信號量。函數調用是爲了獲得posix符合性而實現的,但如果你檢查返回代碼,它們實際上會出錯並帶有未實現的錯誤。我在這裏寫了一篇關於OSX和無名信號量的更多細節的文章,以及一個建議的解決方案: Unnamed-semaphores-and-pososx

相關問題