【问题标题】:Differences between events and semaphores事件和信号量的区别
【发布时间】:2015-05-11 03:03:16
【问题描述】:

我已经搜索过这个主题,但不能很好地理解它。事件和信号量的主要区别是什么?

【问题讨论】:

  • 谷歌搜索标题给出:“大约 231,000 个结果”。直流电压。
  • 我投票决定将此问题作为题外话结束,因为它是对唯一作业答案的 Google 从属请求。

标签: c events operating-system semaphore


【解决方案1】:

一个事件通常只有两种状态,无信号或有信号。信号量有一个计数,如果计数为零则被认为是无信号的,如果计数不为零则被认为是有信号的。在 Windows 的情况下,ReleaseSemaphore() 会增加信号量计数,而带有信号量句柄的 WaitForSingleObject(...) 将等待(除非超时参数设置为零)等待非零计数,然后减少计数在返回之前。

【讨论】:

    【解决方案2】:

    您需要在特定的上下文中了解它吗?这将有助于使其更易于理解。

    通常,信号量是执行操作必须获得的一些标记,例如锁定一个受并发访问保护的执行单元。

    事件是消息/订阅者模式中的函数。

    所以它们有些相关,但甚至没有可比性。

    您可能面临的一个典型的令人困惑/复杂的情况是,一个事件触发了两个不同的订阅者,而不是希望同时访问某些资源。他们应该请求一个信号量令牌并在使用后释放它,让其他订阅者可以使用。

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 2012-03-08
      • 2014-08-03
      • 2011-01-20
      • 2017-11-19
      • 2010-09-08
      • 1970-01-01
      相关资源
      最近更新 更多