6

似乎是一个矛盾,因为信号量应该阻止运行。

互联网搜索没有显示出任何有用的信息来定义这意味着什么。

4

3 回答 3

7

如果信号量的值为 0,对它的向下操作将阻塞,直到有人释放资源并增加信号量。

如果资源不可用,非阻塞信号量不会阻塞关闭操作,而是产生错误。如果程序立即需要该资源或不暂停执行,并且如果资源不可用,则程序逻辑可以执行其他操作,这可能很有用。

于 2012-08-04T00:38:50.403 回答
5

非阻塞信号量通常是指允许您尝试在不阻塞的情况下获取的信号量。如果信号量不能被“锁定”,那么它会失败但不会阻塞。如果它可以被锁定,它将锁定它并返回true(它被锁定)。

于 2012-08-04T00:38:34.460 回答
1

例如,相关的等待操作WaitForSingleObject()允许指定超时值dwMilliseconds。如果将此参数设置为0调用的结果将始终立即返回。这样就可以在不阻塞的情况下测试信号量的状态。

于 2012-08-04T10:19:55.303 回答