信号量持续崩溃在OS X上

时间:2016-04-27 14:18:07

标签: c macos semaphore

我有以下代码:

sem_t *semFull = sem_open("/semFull", O_CREAT, 0644, 0);
sem_t *semEmpty = sem_open("/semEmpty", O_CREAT, 0644, shared.buffSize);

这段代码在Linux上完美运行但是当我尝试在OS X上执行它时,我一直在分段错误

有人可以帮我解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

您不应在OS X上使用sem_t,而应使用semaphore_t

您需要导入以下库

#include <mach/semaphore.h>
#include <mach/task.h>
#include <mach/mach_init.h>

您可以使用以下方法创建信号量:

semaphore_create(mach_task_self(), &shared.full, SYNC_POLICY_FIFO, 0);
semaphore_create(mach_task_self(), &shared.empty, SYNC_POLICY_FIFO, shared.buffSize);

使用这种方法可以解决您的问题。