utente si assume hanno 2 compiti, che non comporta alcun IO (sulla macchina multiprocessore). In questo caso i thread superano Async. Perché Async come un programma a thread singolo esegue le tue attività in ordine. Ma i thread possono eseguire entrambe le attività contemporaneamente.
Si supponga di avere 2 attività, che coinvolgono IO (su macchina multiprocessore). In questo caso, sia Async che Thread eseguono più o meno la stessa cosa (le prestazioni possono variare in base al numero di core, programmazione, quantità di lavoro intensiva del processo ecc.). Anche Async richiede meno risorse, meno spese generali e meno complesse da programmare su programmi multi-thread.
Come funziona? Il thread 1 esegue l'attività 1, poiché è in attesa di IO, viene spostato nella coda di attesa IO . Analogamente Thread 2 esegue Task 2, poiché coinvolge anche IO, viene spostato su IO waiting Queue. Non appena viene risolta la richiesta di I/O , questa viene spostata nella coda pronta in modo che lo scheduler possa pianificare il thread per l'esecuzione di .
Async esegue l'attività 1 e senza attendere che sia IO a completarlo, continua con l'attività 2, quindi attende l'I/O per completare l'attività. È completa le attività nell'ordine di completamento dell'IO.
Async più adatto per attività che implicano chiamate di servizio Web, query di database chiamate ecc., Thread per attività intensive di processo.
Il video qui sotto spiega circa Async vs Threaded model
e anche quando utilizzare ecc, https://www.youtube.com/watch?v=kdzL3r-yJZY
Spero che questo è utile.
Penso che tu intenda sincrono contro asincrono. – someguy
No, intendevo Threaded Async. Ho accennato al punto uno solo perché era qualcosa che ho capito dall'articolo. –