0
我在信號量方面遇到了一些非常基本的麻煩。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)。
您的代碼在我的電腦上工作。帶有內核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