[英]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.