信号量等待事件触发的窗体

时间:2013-01-21 09:09:20

标签: c# winforms events deadlock semaphore

我已经实现了一个缓冲区。缓冲区有两个读写属性。 read函数调用等待read_slot信号量可用。 write函数调用在write_slot上等待。 write_slot信号量安装到初始计数100和最大计数100,而读取槽初始化为初始计数0和最大计数100。

所以我触发一个事件来写缓冲区 - >减少写入时隙 - >增加读槽。事件有时会非常快。 读操作会减少read_slot并增加write_slot。 因此,这种架构不会面临僵局 - >因为只有当read_slot为0且write_slot为0时才会发生死锁...由于插槽在常用互斥锁内增加和减少,这是不可能的。

我仍面临僵局。有没有人对事件触发系统的功能有所了解。

1 个答案:

答案 0 :(得分:0)

  The event is fired very fast sometimes.

为什么不使用Producer Consumer模式。 显然,没有写就无法读取(写操作后应该进行读操作)。 您可以通过BlockingCollections轻松地在.Net中实现此目的。