当前位置:  开发笔记 > 运维 > 正文

Mac OS X上的POSIX信号量:sem_timedwait替代方案

如何解决《MacOSX上的POSIX信号量:sem_timedwait替代方案》经验,为你挑选了1个好方法。

我正在尝试移植一个使用Semaphores到Mac OS X的项目(从linux)但是在Mac OS X上没有实现一些posix信号量

我在这个港口遇到的那个是 sem_timedwait()

我对信号量知之甚少,但是从手册页sem_wait()似乎接近sem_timedwait并且实现了

从手册页

sem_timedwait() function应锁定函数中
semas所引用的信号量sem_wait().但是,如果在
不等待另一个进程或线程
通过执行sem_post() 函数来解锁信号量的情况下无法锁定信号量,则
在指定的超时到期时应终止此等待

从我对semphores如何工作的有限理解,我可以看到sem_timedwait()更安全,但我仍然应该能够使用sem_wait()

它是否正确?如果不是我还有其他选择......

谢谢



1> Jared Oberha..:

超时很可能对算法的运行很重要.因此,使用sem_wait()可能不起作用.

您可以使用sem_trywait(),在所有情况下立即返回.然后,您可以循环,并使用您选择的休眠间隔,每次递减总超时,直到您用完超时或获取信号量.

一个更好的解决方案是重写算法以使用条件变量,然后您可以使用pthread_cond_timedwait()来获得适当的超时.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有