#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()
末。我已閱讀的所有內容(如here和here)都表示,雖然Mac OS X不支持sem_init()
,但確實支持sem_open()
。但是,如上所述使用sem_open()
尚未解決問題。我正在運行OS X 10.5.7。C++的Mac OS X semaphore.h中:麻煩`sem_open()`和`sem_wait()`
您需要檢查'sem_open'的返回值。如果它是'SEM_FAILED',你需要看'errno'。 –