.net FIFO“队列”与最后已知的主题相结合

时间:2012-03-09 02:43:51

标签: c# .net collections

寻找任何现有的FIFO队列,它也根据主题处理覆盖,如下所示

 struct QueueItem { string Topic; .... other data }

如果队列中有按订单添加的项目

q.Add( new QueueItem() { topic = A, ... } ); //1
q.Add( new QueueItem() { topic = B, ... } ); //2
q.Add( new QueueItem() { topic = C, ... } ); //3
q.Add( new QueueItem() { topic = A, ... } ); //4
q.Add( new QueueItem() { topic = B, ... } ); //5

在检索时,订单应该是     #4主题A - 跳过#1     #5主题B - 跳过#2     #3主题C

注意 - 根据上述规则

,添加/处理项目/主题的顺序非常重要

想知道这是否是一个已知的场景,并且可能已经有现有的实施

2 个答案:

答案 0 :(得分:1)

您正在寻找的是优先级队列。您的要求略有不同,因为它使用字母而不是整数作为优先级,但概念是相同的。查看答案C# Priority QueuePriority queue in .Net

答案 1 :(得分:0)

对于一个好的线程安全队列实现,从v4开始检查框架内置的ConcurrentQueue<T>

话虽如此,您要求的行为并不是严格意义上的队列,它更像是一个列表,其中Add()被覆盖以添加或替换等效的现有项目。所以问题仍然存在,你想要一个FIFO队列,还是一个添加/替换列表?