C# TryDequeue从一个不断增长的ConcurrentQueue中获取C中的未知值

C# TryDequeue从一个不断增长的ConcurrentQueue中获取C中的未知值,c#,C#,我已经声明了一个ConcurrentQueue,并将在while循环中使来自外部源的所有数据点排队。当队列大小超过某个数字(例如100)时,是否有方法删除第一个元素? 谢谢 您可能需要的不是队列,而是循环/环形缓冲区 我不知道有什么内置的.NET/C实现,但基本思想是有一个固定大小的存储,带有单独的索引和信号量,用于添加和删除元素 对于并发集合,您可以做的最好的事情是阻塞集合,它等待可用空间或可用元素,阻塞读写器 当您创建队列时,如何知道是否已知?使用TrydQueue有什么问题?最好的解决方案

我已经声明了一个ConcurrentQueue,并将在while循环中使来自外部源的所有数据点排队。当队列大小超过某个数字(例如100)时,是否有方法删除第一个元素?
谢谢

您可能需要的不是队列,而是循环/环形缓冲区

我不知道有什么内置的.NET/C实现,但基本思想是有一个固定大小的存储,带有单独的索引和信号量,用于添加和删除元素


对于并发集合,您可以做的最好的事情是阻塞集合,它等待可用空间或可用元素,阻塞读写器

当您创建队列时,如何知道是否已知?使用TrydQueue有什么问题?最好的解决方案可能是实现您自己的队列,其中后台的数据结构是一个循环缓冲区。这就可以了,也不太难。ConcurrentQueue中没有什么特别的东西可以促进这一点。谁在读书,谁在写作?您始终可以使用事件或监视器让生产者在任何任意情况下唤醒消费者,如队列计数超过100。