Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Baris Gilir Sejarah Saiz Tetap Menggunakan ConcurrentQueue?
Melanjutkan ConcurrentQueue untuk Pengurusan Sejarah Saiz Tetap
System.Collections.Concurrent.ConcurrentQueue ialah alat yang teguh untuk mengurus baris gilir dalam persekitaran berbilang benang. Walau bagaimanapun, ia tidak menyokong had saiz tetap; entri lama tidak dialih keluar secara automatik apabila baris gilir penuh.
Memperkenalkan Penyelesaian FixedSizedQueue
Untuk mengatasi had ini, kami akan membina FixedSizedQueue
kelas pembalut. Kelas ini mempertingkatkan kefungsian ConcurrentQueue
untuk menafikan elemen lapuk secara automatik apabila sisipan baharu.
Strategi Pelaksanaan
FixedSizedQueue
merangkum contoh ConcurrentQueue
peribadi dan objek kunci untuk keselamatan benang. Kaedah Enqueue
menyemak baris gilir Count
. Jika ia melebihi Limit
yang dipratentukan, kaedah memperoleh kunci, kemudian menyah gilir elemen berulang kali sehingga Count
berada di bawah Limit
.
Aplikasi Praktikal
Untuk menggunakan FixedSizedQueue
, mulakan dengan Limit
yang dikehendaki:
<code class="language-csharp">FixedSizedQueue<string> urlQueue = new FixedSizedQueue<string>(100);</code>
Menambah URL baharu (dan mengalih keluar URL lama secara automatik) adalah mudah:
<code class="language-csharp">urlQueue.Enqueue("example.com");</code>
Kebaikan
FixedSizedQueue
menawarkan pendekatan yang diperkemas dan cekap untuk mengurus data sejarah bersaiz tetap. Ia mengutamakan entri terbaharu sambil membuang entri yang lebih lama secara automatik, sesuai untuk senario dengan storan terhad atau apabila menjejaki bilangan acara terbaharu tertentu adalah penting.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Baris Gilir Sejarah Saiz Tetap Menggunakan ConcurrentQueue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!