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
Lepaskan: 2025-01-13 09:01:43
asal
369 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan