代码之家  ›  专栏  ›  技术社区  ›  Aakash Goel

什么是非阻塞信号量?

  •  6
  • Aakash Goel  · 技术社区  · 12 年前

    这似乎是一个矛盾,因为信号量应该阻塞才能发挥作用。

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

    3 回复  |  直到 12 年前
        1
  •  7
  •   nos    12 年前

    如果信号量的值为0,则对其执行向下操作将被阻止,直到有人释放资源并增加信号量为止。

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

        2
  •  5
  •   Reed Copsey    12 年前

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

        3
  •  1
  •   Arno    12 年前

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