【发布时间】:2010-11-27 16:18:31
【问题描述】:
我正在编写一些使用 pthread 和 semaphore 库的代码。 sem_init 函数在我的 Ubuntu 机器上运行良好,但在 OS X 上 sem_init 函数完全没有效果。图书馆有什么问题还是有不同的方法?这是我用来测试的代码。
sem_t sem1;
sem_t sem2;
sem_t sem3;
sem_t sem4;
sem_t sem5;
sem_t sem6;
sem_init(&sem1, 1, 1);
sem_init(&sem2, 1, 2);
sem_init(&sem3, 1, 3);
sem_init(&sem4, 1, 4);
sem_init(&sem5, 1, 5);
sem_init(&sem6, 1, 6);
这些值似乎是随机数,在sem_init 调用后它们不会改变。
【问题讨论】:
-
你应该测试
sem_init的返回值。 -
请注意,至少在 Mac OS X Yosemite (10.10) 中,
sem_init()、sem_destroy()和sem_getvalue()被标记为“已弃用”并因此生成编译器警告。 -
@JonathanLeffler 哦,不。它无法在 Mac OS X Yosemite(10.10.1) 中运行。
标签: c macos pthreads semaphore