Při každodenním vývoji můžeme používat fronty, což je úložná struktura schopná dosáhnout principu "první dovnitř, první ven".
Scénáře aplikace: psát logy, posílat e-maily atd
Pokud potřebujeme zaznamenat záznam rozhraní každého uživatele, který požaduje naše data, nemusíme pokaždé zapisovat log, když o něj uživatel žádá, můžeme obsah logu vložit do fronty a nechat ho vykonávat jiná vlákna, aby to neovlivnilo efektivitu aplikace.
Další výhodou je, že přidání dat do fronty v případě souběžnosti, kdy se použije jedno vlákno k vykonání dat fronty, se dá vyhnout mnoha výjimkám, pokud souběžnost (vícevláknové) způsobí přístup ke stejnému fyzickému souboru výjimky. (v závislosti na dostupnosti)
Univerzální přístup fronty:
Jedná se o abstraktní třídu a musíte ji zdědit a implementovat metodu Execute abstraction. Protože nevím, jaký typ dat chcete zpracovávat, používají se zde generické údaje, tedy entita je typu řetězce, parametry metody jsou typu řetězce a data, která zpracováváte, jsou data typu řetězce.
ConcurrentQueue bezpečná fronta pro vlákna zajišťuje, že v prostředí s více vlákny nebudou žádné výjimky.
ManualResetEvent pro řízení signálu vlákna,V minulosti jsme frontu kontrolovali na data každých pár sekund nebo minutTeď přidáváme data do fronty a stačí jen předat signál!
Použití:
(Konec)
|