Pri dennom vývoji môžeme používať fronty, čo je úložná štruktúra schopná dosiahnuť princíp "prvý dnu, prvý von".
Aplikačné scenáre: písanie logov, posielanie e-mailov a podobne
Ak potrebujeme zaznamenať rozhraniový log každého používateľa, ktorý žiada naše dáta, nemusíme zapisovať log zakaždým, keď ho používateľ požiada, môžeme obsah logu vložiť do fronty a nechať ho vykonávať iné vlákna, aby sme neovplyvnili efektivitu aplikácie.
Ďalšou výhodou je, že pridaním dát do fronty v prípade súbežnosti, použitím jedného vlákna na vykonanie dát fronty, môže sa vyhnúť mnohým výnimkám, ak súbežnosť (viacvláknové), prístup k rovnakému fyzickému súboru spôsobí výnimky. (v závislosti od dostupnosti)
Univerzálny prístup queue:
Toto je abstraktná trieda a musíte zdediť túto abstraktnú triedu a implementovať metódu Execute abstraction. Keďže neviem, aký typ dát chcete spracovávať, používajú sa tu generické údaje, teda entita je typu reťazca, parametre metódy typ reťazca a dáta, ktoré spracovávate, sú dáta typu reťazca.
ConcurrentQueue thread-safe queue zaručuje, že v prostredí s viacvláknom nebudú žiadne výnimky.
ManualResetEvent na ovládanie signálu vlákna,V minulosti sme kontrolovali frontu na dáta každých pár sekúnd alebo minútTeraz pridávame dáta do fronty a stačí len preniesť signál!
Použitie:
(Koniec)
|