【发布时间】:2013-06-25 15:04:13
【问题描述】:
我需要一个非常专业的基于队列的数据结构。我的想法是我需要自己烘焙一些东西,但我想在开始之前向社区征求意见。
我需要的主要是一个队列,其中每个队列项都由生产者添加。队列项上要完成的工作必须是同步的(一次只允许处理一项)。但是,这些项目是临时的。当生产者去向队列添加工作时,如果队列已经有该生产者添加的工作,则队列项目过期,而不是将其从队列中删除,该项目将替换为生产者的新项目,因为我不希望那样生产者失去他们在队列中的位置。
所以队列的规则是:
从队列中拉出的项目一次只有一个。这个很简单,毕竟是队列……
多个生产者可以同时将项目添加到队列中。
如果生产者在队列中已有项目,则队列项目将替换为生产者的新项目。
在将项目添加到队列时无法从队列中拉出项目(这样正在修改的项目在被修改之前无法拉出)
生产者不一定需要在队列中有项目,每个生产者都可以在没有工作的情况下延长一段时间。
任何关于如何实现这种结构或适合需要的现有数据结构的想法将不胜感激!
【问题讨论】:
-
您可能想要实现
IProducerConsumerCollection(T)。这样你就可以使用BlockingCollection来处理Add和Remove操作。
标签: c# data-structures queue