Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengekalkan Sejarah Terbatas Menggunakan Baris Serentak dalam C#?

Bagaimana untuk Mengekalkan Sejarah Terbatas Menggunakan Baris Serentak dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-13 09:01:43365semak imbas

How to Maintain a Bounded History Using a Concurrent Queue in C#?

Menggunakan Sistem.Koleksi.Serentak untuk Sejarah Saiz Tetap

Bayangkan memerlukan struktur data untuk menjejak sejarah terkini, seperti URL penyemak imbas. System.Collections.Concurrent.ConcurrentQueue ialah pilihan yang baik, tetapi kita perlu mengehadkan saiznya.

Contoh ini menunjukkan kelas FixedSizedQueue<T> yang membungkus ConcurrentQueue untuk mengurus sejarah yang terhad:

<code class="language-csharp">public class FixedSizedQueue<T>
{
    private readonly ConcurrentQueue<T> _queue = new ConcurrentQueue<T>();
    private readonly object _lock = new object();
    public int Limit { get; set; }

    public void Enqueue(T item)
    {
        _queue.Enqueue(item);

        lock (_lock)
        {
            T overflow;
            while (_queue.Count > Limit && _queue.TryDequeue(out overflow)) { }
        }
    }

    // Add other methods like Dequeue, Count, etc., as needed.
}</code>

Properti Limit mentakrifkan saiz baris gilir maksimum. Enqueue menambah item; jika melebihi had, ia menggunakan kunci untuk mengalih keluar item lama dengan selamat sehingga saiznya berada dalam had. Ini hanya menyimpan entri terbaharu. Anda akan melanjutkan kelas ini untuk memasukkan kaedah lain seperti Dequeue, Count, dsb., seperti yang diperlukan oleh aplikasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Sejarah Terbatas Menggunakan Baris Serentak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn