【发布时间】:2015-05-11 03:03:16
【问题描述】:
我已经搜索过这个主题,但不能很好地理解它。事件和信号量的主要区别是什么?
【问题讨论】:
-
谷歌搜索标题给出:“大约 231,000 个结果”。直流电压。
-
我投票决定将此问题作为题外话结束,因为它是对唯一作业答案的 Google 从属请求。
标签: c events operating-system semaphore
我已经搜索过这个主题,但不能很好地理解它。事件和信号量的主要区别是什么?
【问题讨论】:
标签: c events operating-system semaphore
一个事件通常只有两种状态,无信号或有信号。信号量有一个计数,如果计数为零则被认为是无信号的,如果计数不为零则被认为是有信号的。在 Windows 的情况下,ReleaseSemaphore() 会增加信号量计数,而带有信号量句柄的 WaitForSingleObject(...) 将等待(除非超时参数设置为零)等待非零计数,然后减少计数在返回之前。
【讨论】:
您需要在特定的上下文中了解它吗?这将有助于使其更易于理解。
通常,信号量是执行操作必须获得的一些标记,例如锁定一个受并发访问保护的执行单元。
事件是消息/订阅者模式中的函数。
所以它们有些相关,但甚至没有可比性。
您可能面临的一个典型的令人困惑/复杂的情况是,一个事件触发了两个不同的订阅者,而不是希望同时访问某些资源。他们应该请求一个信号量令牌并在使用后释放它,让其他订阅者可以使用。
【讨论】: