簡體   English   中英

C ++ Macs OS X semaphore.h:出現“ sem_open()”和“ sem_wait()”問題

[英]C++ Macs OS X semaphore.h: trouble with `sem_open()` and `sem_wait()`

#include <semaphore.h>

sem_t* x;

int main () 
{
    x = sem_open("x", O_CREAT, 0, 0);;
    sem_wait(x); sem_wait(x); sem_wait(x);
    std::cout << "\ndone\n";
}

該代碼甚至不應該通過第一個sem_wait()但是在我的系統上,它將到達main()的末尾。 我讀過的所有內容(例如此處此處 )都表示,盡管Mac OS X不支持sem_init() ,但它確實支持sem_open() 但是,如上所述使用sem_open()不能解決問題。 我正在運行OS X 10.5.7。

嘗試放入sem_unlink("x"); sem_open()之前,我確定這不是您第一次嘗試。 除非您將其刪除,否則模式0不會讓您對其進行過多處理。 另外,請檢查您的通話是否有錯誤,如果無法解決,則至少可以修正您的問題。

sem_open權限為0表示沒有人可以訪問該信號量。 您確實應該添加適當的錯誤檢查-它會告訴您哪個函數失敗了,以及方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM