gpt4 book ai didi

c - MacOS 中 sem_getvalue() 的替代品是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:45 26 4
gpt4 key购买 nike

我有一段代码使用未命名的信号量和线程连接。我想在 MacOS 中编译它,但我发现 MacOS 不支持未命名的信号量,而 dispatch semaphore 是它的替代品。在我的代码中有一点我想发布信号量直到信号量计数器变为零,所以我使用 sem_getvalue() 函数。这是我的代码

sem_getvalue(&(event), &res);
while (res <= 0) {
sem_post(&(tcp_client->resp_event));
res++;
}

1.有什么办法可以用dispatch semaphore来处理吗?

2.在MacOS中有没有更好的方法来替换未命名的信号量?

最佳答案

要用信号量做这件事是一件非常可疑的事情。它建议您应该使用其他一些同步机制,也许是条件锁。

也就是说,不,分派(dispatch)信号量不直接提供这样的机制。但是信号量是一种非常基本的同步原语,几乎可以在其上构建任何其他同步方案。不过,为了让我们提出建议,我们需要知道您使用它的目的。例如,在什么情况下你会像这样“重置”你的信号量,为什么?

关于c - MacOS 中 sem_getvalue() 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027668/

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