C++中的信号量
问题描述:
我在信号量方面遇到了一些非常基本的麻烦。C++中的信号量
#include <iostream>
using namespace std;
#include <semaphore.h>
int main() {
sem_t sem;
sem_init(&sem, 1, 1);
sem_wait(&sem);
sem_wait(&sem);
printf("Return value: %d\n", sem_wait(&sem));
return 0;
}
我期待这段代码永远等待(由于第二个sem_wait)。 而是打印出“返回值:-1”,然后退出。 我在Mac上使用g ++版本4.2.1进行编译(OSX 10.8.5)。
答
OS/X不支持未命名的POSIX信号量。使用sem_open()而不是sem_init()。
您的代码在我的电脑上工作。带有内核3.2.0的Ubuntu 12.04 64bit,libc-2.15 – 2014-09-29 01:21:28
这篇文章说OS/X不支持未命名的POSIX信号量:http://lists.apple.com/archives/darwin-kernel/2009/Apr/msg00010。 html – jsp 2014-09-29 01:38:06
所以我应该使用sem_open()而不是sem_init()? – jbzdarkid 2014-09-29 01:40:54