事件和信号量之间的差异

时间:2015-03-09 20:02:53

标签: c events operating-system semaphore

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

2 个答案:

答案 0 :(得分:1)

事件通常只有两个状态,无信号或信号。信号量具有计数,如果计数为零则被视为无信号,并且如果计数不为零则发信号通知。对于Windows,ReleaseSemaphore()递增信号量计数,具有信号量句柄的WaitForSingleObject(...)将等待(除非超时参数设置为零)非零计数,然后递减计数在回来之前。

答案 1 :(得分:0)

您是否需要在特定环境中了解它?这将有助于使其更易于理解。

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

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

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

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