首页 >后端开发 >C++ >如何在C#中实现自动出队的固定大小队列?

如何在C#中实现自动出队的固定大小队列?

Patricia Arquette
Patricia Arquette原创
2025-01-13 08:50:47833浏览

How to Implement a Fixed-Size Queue with Automatic Dequeuing in C#?

用 C# 创建固定大小的队列并自动删除旧项目

本文讨论了创建一个数据结构,该结构维护有限的对象历史记录,当达到最大大小时自动丢弃最旧的条目。我们将使用 System.Collections 命名空间构建此队列。

解决方案:

该解决方案使用围绕 FixedSizedQueue<T> 的包装类 ConcurrentQueue<T>。 此包装器中的 Enqueue 方法检查队列的大小。如果队列已满(由 Limit 属性定义),则通过 Dequeue 删除最旧的项目以容纳新项目。

这是 FixedSizedQueue<T> 类的 C# 代码:

<code class="language-csharp">public class FixedSizedQueue<T>
{
    private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>();
    private readonly object lockObject = new object();

    public int Limit { get; set; }

    public void Enqueue(T obj)
    {
        queue.Enqueue(obj);
        lock (lockObject)
        {
            T overflow;
            while (queue.Count > Limit && queue.TryDequeue(out overflow)) ;
        }
    }
}</code>

使用 FixedSizedQueue<T> 可确保固定大小的历史记录,并在达到容量限制时自动删除旧项目。

以上是如何在C#中实现自动出队的固定大小队列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn