【发布时间】:2011-11-09 10:27:24
【问题描述】:
#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。
【问题讨论】:
-
你需要检查
sem_open的返回值。如果是SEM_FAILED,则需要查看errno。