具有硬阈值的队列结构

时间:2010-12-06 19:00:40

标签: .net collections c#-4.0

在.NET中是否有队列类型集合允许在达到队列容量时将元素推出队列?

2 个答案:

答案 0 :(得分:3)

在调用Add()后,当Count超出限制时,只需调用Dequeue就可以轻而易举。跳出一种扩展方法。

答案 1 :(得分:2)

我建议创建一个新类,而不是子类化队列,因为有限长度的队列类不应该传递给可能调用旧的enqueue方法的代码。如果在完整时发生推送,队列可能会执行许多逻辑操作:

  1. 在推送时抛出异常
  2. 等待阅读项目
  3. 删除最旧的项目
  4. 删除最新项目
  5. 使队列失效,以便在下次读取时抛出异常,但从推送返回;进一步推动将成为无操作。

创建可继承的基类,然后创建实现特定行为的派生类可能会很好。这样,关心问题场景的方法可能需要一个承诺正确处理它的类。请注意,最后一个场景可能看起来很奇怪,但有时它是合适的,例如将数据放入队列以便处理其他任务的事件处理程序。如果队列足够大以至于它不应该溢出,但读取器任务被阻止,则可能不希望将这种阻塞渗透回事件发送者。