我需要以下收藏品:
1 - 固定尺寸长度。因此,它会在达到固定大小限制时自动将尾部出列。
2 - 可以访问单个元素,不一定是头部或尾部。
3 - FIFO。
4 - 允许安全的并发访问(但是,我现在可以妥协这个位)。
5 - 入队和出队方法。
我正在使用.NET 4.5并且知道ConcurrentQueue类,但它缺少第1点和第2点。我正在考虑构建实现IEnumerable的类并在后台使用IList。
我可以从ConcurrentQueue继承,但我需要不断访问body元素(不仅仅是head和tail),每次枚举它都会效率低下。
你有更好的方法,或者你推荐任何类似工作的集合?
答案 0 :(得分:0)
围绕List或数组构建包装器。提供您想要的队列方法,跟踪大小等。将您自己的并发需求编入此类。
答案 1 :(得分:0)
使用基于旧普通System.Array
的队列实现。你的观点:
1 - 数组具有固定长度。
2 - 可以按照定义访问O(1)中的各个元素。
3 - 这将是队列,因此它是FIFO。
4 - 数组将是并发安全的,只需使用lock
进行Enqueue和Dequeue方法。
5 - 轻松实施。