信号量在 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);
你的问题应该可以用这种方法解决。
我有以下代码:
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);
你的问题应该可以用这种方法解决。