gpt4 book ai didi

c++ - Mac OS X 中的 sem_getvalue() 功能障碍 - C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:58 25 4
gpt4 key购买 nike

我正在尝试通过信号量在 Mac OS X 中为一堆线程实现共享内存的同步使用。

(我只是忽略了一个事实,即 Mac 用户在初始化和销毁​​信号量时遇到了很多问题......,可以通过 sem_open() 和 sem_unlink() 修复):D

但显然要获取信号量的当前值,除了 sem_getvalue() 之外别无他物,它尚未在 mac os x 中实现。

对于没有运行 linux 操作系统并且应该在几个小时内上传作业的人有什么建议吗??!:)

谢谢

最佳答案

我想您是在问,“我该如何解决 OS X 上缺少 sem_getvalue() 的问题?”

我可以想到三种方法:

首先(在我看来最好)重新设计您的程序,以便永远不需要信号量的当前值。毕竟,as the documentation warnssem_getvalue 报告的值在收到时不一定准确。

其次,如有必要,包装 POSIX 信号量函数并保留您自己的计数。每个 sem_t 都可以由一个计数器和一个保护该计数器的互斥锁来装饰。您的实现可能会有(并且可能应该有!)与 sem_getvalue 相同的警告,即一旦检索到计数,就不能相信它是准确的。

第三,在我看来也是最不受欢迎的,切换到更老更复杂的 SysV semaphore IPC界面。这实现了类似于 sem_getvalue 的东西。

关于c++ - Mac OS X 中的 sem_getvalue() 功能障碍 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655153/

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