Nello sviluppo quotidiano, possiamo usare le code, che sono una struttura di archiviazione in grado di ottenere il "first-in, first-out".
Scenari applicativi: scrivere log, inviare email, ecc
Se dobbiamo registrare il log dell'interfaccia di ogni utente che richiede i nostri dati, non è necessario scrivere un log ogni volta che l'utente lo richiede, possiamo mettere il contenuto del log in coda e lasciare che altri thread lo esigano, così da non compromettere l'efficienza dell'applicazione.
Un altro vantaggio è che aggiungere dati alla coda in caso di concorrenza, usando un singolo thread per eseguire i dati della coda, può evitare molte eccezioni; se concorrenza (multi-thread), l'accesso allo stesso file fisico causerà eccezioni. (soggetto a disponibilità)
Approccio universale a coda:
Questa è una classe astratta, e devi ereditare questa classe di astrazione e implementare il metodo di astrazione Esegui. Poiché non so che tipo di dati vuoi elaborare, qui si usano generici, cioè, Entità è di tipo stringa, i parametri del metodo sono di tipo stringa, e i dati che stai elaborando sono dati di tipo stringa.
La coda thread-safe ConcurrentQueue garantisce che non ci siano eccezioni in un ambiente multithread.
ManualResetEvent per controllare il segnale del thread,In passato, controllavamo la coda per i dati ogni pochi secondi o minutiOra aggiungiamo i dati alla coda e basta passare un segnale!
Utilizzo:
(Fine)
|