C#并发,固定大小的队列,能够引用单个项目

时间:2012-12-21 20:48:06

标签: c#-4.0 collections queue

我需要以下收藏品:

1 - 固定尺寸长度。因此,它会在达到固定大小限制时自动将尾部出列。

2 - 可以访问单个元素,不一定是头部或尾部。

3 - FIFO。

4 - 允许安全的并发访问(但是,我现在可以妥协这个位)。

5 - 入队和出队方法。

我正在使用.NET 4.5并且知道ConcurrentQueue类,但它缺少第1点和第2点。我正在考虑构建实现IEnumerable的类并在后台使用IList。

我可以从ConcurrentQueue继承,但我需要不断访问body元素(不仅仅是head和tail),每次枚举它都会效率低下。

你有更好的方法,或者你推荐任何类似工作的集合?

2 个答案:

答案 0 :(得分:0)

围绕List或数组构建包装器。提供您想要的队列方法,跟踪大小等。将您自己的并发需求编入此类。

答案 1 :(得分:0)

使用基于旧普通System.Array的队列实现。你的观点:

1 - 数组具有固定长度。

2 - 可以按照定义访问O(1)中的各个元素。

3 - 这将是队列,因此它是FIFO。

4 - 数组将是并发安全的,只需使用lock进行Enqueue和Dequeue方法。

5 - 轻松实施。