信号量是一个计数对象。问题是如何用多个计数锁定它?
例如,我想调用lock(num, timeout)
函数。它在至少有num
可用资源时锁定,或在通过时失败timeout
,但仍有资源少于 num
.
在 Windows 上可以吗?或者也许使用pthread?
目前在 Windows 上,WaitForSingleObject
将对象的计数减少1
. 我认为WaitForSingleObject
多次调用无法解决问题,因为:
准确的超时很难实现,并且
num
我想在资源全部可用时处理数据(写入磁盘) (写入更大尺寸的数据更快)。因此,例如,如果少于num
资源被单独锁定,那么我可能不得不释放(在我锁定之后)它们以供下次使用,因为即使超时通过,其余的资源仍然不可用。我认为这是一个糟糕的设计。需要帮助。