[英]Does Mach semaphore work in shared memory between processes?
我有興趣使用信號量,使用semaphore_create(task, sem, policy, value)
從mach/semaphore.h
,在共享內存中同步Mac OS中的兩個進程。
我知道,在Linux上使用sem_init(sem, pshared, value)
, pshared
必須是在這種情況下不為零,但我無法找到和Mac(其中信息sem_init
沒有實現),我真的不希望使用命名信號量,因為我需要創建很多信號量。
我嘗試了一個最小的例子它似乎不起作用,所以我想知道我做錯了什么或它只是不起作用。 我也對其他進程間鎖定替代方案持開放態度。
OSX不支持匿名信號量。 實現函數調用以獲得posix合規性,但是如果檢查返回代碼,它們實際上會出現未實現的錯誤。 我在這里寫了一篇文章,詳細介紹了OSX和未命名的信號量,以及一個建議的解決方案: Unnamed-semaphores-and-pososx
這是關於semaphore_create和朋友的文檔: https : //developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KernelProgramming/synchronization/synchronization.html
我沒有Mac,所以我無法測試任何東西,但我沒有看到任何無法命名的信號量的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.