gpt4 book ai didi

c# - 固定大小的队列,在新入队时自动使旧值出队

转载 作者:IT王子 更新时间:2023-10-29 03:34:35 26 4
gpt4 key购买 nike

我将 ConcurrentQueue 用于共享数据结构,其目的是保存传递给它的最后 N 个对象(某种历史记录)。

假设我们有一个浏览器,我们想要获得最近 100 个浏览过的 Urls。我想要一个队列,当容量已满(历史上有 100 个地址)时,它会在新条目插入(入队)时自动丢弃(出队)最旧的(第一个)条目。

我如何使用 System.Collections 完成此操作?

最佳答案

我会编写一个包装类,在入队时检查计数,然后在计数超过限制时出队。

 public class FixedSizedQueue<T>
{
ConcurrentQueue<T> q = new ConcurrentQueue<T>();
private object lockObject = new object();

public int Limit { get; set; }
public void Enqueue(T obj)
{
q.Enqueue(obj);
lock (lockObject)
{
T overflow;
while (q.Count > Limit && q.TryDequeue(out overflow)) ;
}
}
}

关于c# - 固定大小的队列,在新入队时自动使旧值出队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com