如何用非指针信号量的sem_open()替换sem_init()?

时间:2013-11-07 13:37:45

标签: ios c semaphore

我目前遇到了一个问题。

以下是原始代码

sem_t s;
sem_init(&s, 0, 1);

我需要用sem_open替换sem_init,因为它将在iOS上使用

sem_t s;
sem_open("/s", O_CREAT, 0644, 1); //which will return sem_t*

我应该如何将退货地址分配给s? 感谢

P.S。我没有宣布sem_t * s,因为这是一个巨大的图书馆,我不会改变它太多

1 个答案:

答案 0 :(得分:0)

创建一个新的信号量指针

 sem_t *sptr;

调用sem_open,因为sptr拥有地址

 sptr = sem_open("/s", O_CREAT, 0644, 1);

下面的预处理器宏应该可以解决问题,

 #define s *sptr

使用上述方法,当s作为参数传递时,例如sem_wait(&s)沸腾到sem_wait(&*sptr) => sem_wait(sptr),而不需要更改sem_t s