信号量在 OS X 上不断崩溃

Semaphore keeps crashing on OS X

我有以下代码:

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

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

谁能帮我解决这个问题?

谢谢

你不应该在 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);

你的问题应该可以用这种方法解决。