Single Threaded Blocco
Per capire asincrono/concorrente/multi-threaded che dobbiamo iniziare con il maggior numero di basi e perché aggiungiamo tanto la complessità della questione.
All'inizio esistevano solo applicazioni con blocco singolo. Questi sono programmi davvero semplici, e più che probabile, questi sono ciò che stai scrivendo in questo momento.
Per spiegare, userò un'analogia di una pizzeria.
Immagina che il tuo computer sia una pizzeria con un solo dipendente. Ha solo avuto una formazione di base.
Entrate nel negozio, parlate con il dipendente, guardate il menu e ordinate una pizza.
Grande. Il dipendente entra nella parte posteriore del negozio, mette una pizza negli oltre e si trova accanto al forno aspettando che la pizza cucini.
Ti ricordi che a tua moglie non piacciono gli ananas. Urli al dipendente che cerca di attirare la sua attenzione per cambiare il tuo ordine. Niente da fare. Non si muoverà dal forno (si addormenta).
Ti arrabbi e parti.
multi-threaded Concurrent Blocco
Si va al prossimo negozio di pizza.
Ha 4 dipendenti.
Entrate nel negozio, parlate con il dipendente, guardate il menu e ordinate una pizza.
Lui grida (invia un messaggio) agli altri dipendenti nella parte posteriore per farti una pizza. Ne mettono uno nel forno. Sta in piedi vicino al forno e dorme.
Hai dimenticato che tua moglie ha delle allergie al bacon. Dì al dipendente A di cancellare la pizza. Lui urla dentro al cuoco, lo sveglia. Il cuoco getta la pizza nel cestino e mette una pizza Kosher nel forno. Si riaddormenta prontamente.
Aspetta, la pizza è pronta, ottieni un conto. È enorme (assolda troppo personale e metà di loro dormono nel lavoro).
Single Threaded asincrono/non-blocking
Si va al prossimo negozio di pizza.
Ha 1 dipendente.
Entrate nel negozio, parlate con il dipendente, guardate il menu e ordinate una pizza.
Cammina dentro, mette una pizza nel forno. Quindi allega la ricevuta (callback) alla pizza. Torna indietro al bancone.
Ti ricordi che tua moglie in realtà non mangia carne questo mese. Dillo al dipendente, lui entra, risolve la situazione.
Dopo che il dipendente ha controllato all'interno per una pizza fatta. Poi legge la ricevuta (consegna questa pizza a Bob).
Ottiene pizza economica a prezzi accessibili e reattiva.
_Asynchronous_ fa ** not ** implica sempre multi-thread. _ [... Ma un sistema asincrono a thread singolo verrà sempre eseguito con interleaving, anche su un sistema multiprocessore.] (Http://cs.brown.edu/courses/cs168/f12/handouts/async.pdf) _ - Brown University. La differenza è quella della concorrenza – MickyD
C'è un buon articolo su codeproject, pls rimanda al collegamento, http://www.codeproject.com/Articles/14931/Asynchronous-Method-Invocation – Shyju
@Shyju Penso che questo sia proprio quello che voglio , così facile da capire. Grazie mille. – yubaolee