I daglig udvikling kan vi bruge køer, som er en lagringsstruktur, der kan opnå "først ind, først ud".
Anvendelsesscenarier: skriv logfiler, send e-mails osv
Hvis vi skal registrere interfaceloggen for hver bruger, der anmoder om vores data, behøver vi ikke skrive en log hver gang brugeren anmoder om det; vi kan lægge logindholdet i køen og lade andre tråde udføre det, så det ikke påvirker applikationens effektivitet.
En anden fordel er, at tilføjelse af data til køen i tilfælde af samtidighed, hvor man bruger en enkelt tråd til at udføre køens data, kan undgå mange undtagelser; hvis samtidighed (multi-trådet), vil adgang til den samme fysiske fil forårsage undtagelser. (afhængigt af tilgængelighed)
Kø-universel tilgang:
Dette er en abstrakt klasse, og du skal arve denne abstraktionsklasse og implementere Execute-abstraktionsmetoden. Fordi jeg ikke ved, hvilken type data du vil behandle, bruges generiske her – det vil sige, Entity er af strengtype, metodeparametre er strengtype, og de data, du behandler, er strengtypedata.
ConcurrentQueue trådsikker kø sikrer, at der ikke vil være undtagelser i et multitrådet miljø.
ManualResetEvent for at styre trådens signal,Tidligere tjekkede vi køen for data hvert par sekunder eller minutterNu tilføjer vi dataene til køen og behøver kun at sende et signal!
Brug:
(Slut)
|