2

我需要以下集合:

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

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

3 - 先进先出。

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

5 - 入队和出队方法。

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

我可以从 ConcurrentQueue 继承,但是我需要不断地访问 body 元素(不仅仅是头部和尾部)并且每次都枚举它是低效的。

你有更好的方法还是你推荐任何做类似工作的集合?

4

2 回答 2

0

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

于 2012-12-21T20:55:55.893 回答
0

使用基于 old plain 的队列实现System.Array。你的观点:

1 - 数组具有固定长度。

2 - 根据定义可以访问 O(1) 中的单个元素。

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

4 - 数组将是并发安全的,仅lock用于 Enqueue 和 Dequeue 方法。

5 - 轻松实现它们。

于 2012-12-21T20:58:35.183 回答