gpt4 book ai didi

ios - 对于非指针信号量,如何用 sem_open() 替换 sem_init() ?

转载 作者:行者123 更新时间:2023-11-30 17:44:49 27 4
gpt4 key购买 nike

我目前遇到了一个问题。

下面是原代码

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

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

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

我应该如何将返回地址分配给 s?谢谢

附:我不声明 sem_t* s,因为这是一个巨大的库,我不会对其进行太多更改

最佳答案

创建一个新的信号量指针,

 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 的情况下所需要的。

关于ios - 对于非指针信号量,如何用 sem_open() 替换 sem_init() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com