0

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

所以我触发了一个事件来写入缓冲区——>减少写入槽——>增加读取槽。该事件有时会非常快地触发。读操作减少 read_slot 并增加 write_slot。因此,这种架构不能面对死锁--> 因为只有当 read_slot 为 0 且 write_slot 为 0 时才会发生死锁......这是不可能的,因为在普通互斥锁中增加和减少了槽。

我仍然面临僵局。有没有人对事件触发系统的功能有任何想法。

4

1 回答 1

0
  The event is fired very fast sometimes.

为什么不使用生产者消费者模式。显然,你不能不写就读(读操作应该在写操作之后进行)。您可以通过BlockingCollections在 .Net 中轻松实现这一点。

于 2013-01-21T09:33:12.073 回答