我已经实现了一个缓冲区。缓冲区有读写两个属性。读取函数调用等待 read_slot 信号量可用。write 函数调用在 write_slot 上等待。write_slot 信号量安装到初始计数 100 和最大计数 100,而读取槽初始化为初始计数 0 和最大计数 100。
所以我触发了一个事件来写入缓冲区——>减少写入槽——>增加读取槽。该事件有时会非常快地触发。读操作减少 read_slot 并增加 write_slot。因此,这种架构不能面对死锁--> 因为只有当 read_slot 为 0 且 write_slot 为 0 时才会发生死锁......这是不可能的,因为在普通互斥锁中增加和减少了槽。
我仍然面临僵局。有没有人对事件触发系统的功能有任何想法。