我正在寻找一种基本上像这样工作的数据结构:
以上是我最好的实施猜测。我真正想要的属性是能够拥有一个消费者,它可以保留一种书签价值,并且可以在不丢失的情况下读取新项目,并且能够在某个时间戳之前清除项目。但是,数据结构不需要知道时间戳;能够在特定索引之前删除所有内容。
我实现这种结构的方法是保持项目计数开始的位置的int,然后直接保留项目列表或列表段列表。索引是某种原始整数将包装,但不在程序生命的实际时间跨度的几倍内。
我所知道的最接近的结构是来自the LMAX Disruptor的特定环形缓冲区。但是,如果消费者太落后而不适合我的目的,那么这种结构也会受阻。消费者是面向批处理的,可能不会频繁占用CPU时间; Disruptor最适用于持续针对环形缓冲区的专用逻辑任务。
所以我问的问题是:
答案 0 :(得分:1)
不知道任何类似的预设集合,但您可以创建自定义集合对象,扩展System.Collections.CollectionBase。
public class MyCollection : CollectionBase
{
public MyCollection() { }
此集合基础对象包含一个List属性,您可以以任何方式公开它,例如,添加Add()方法
public int Add(Object o) // could by anything
{
return List.Add(o);
}
你可以有一个返回新集合的GetRange(int start,int length),就像你填充返回集合一样,从基础集合中删除