Un modello filettato genera un nuovo thread per ogni richiesta. Ciò significa che si ottiene un po 'di overhead in termini di calcolo e memoria. Un ciclo di eventi viene eseguito in un singolo thread, il che significa che non si ottiene il sovraccarico.
Il risultato di ciò è che è necessario modificare il modello di programmazione. Poiché tutte queste cose diverse stanno accadendo nella stessa discussione, non puoi bloccare. Questo significa che non puoi aspettare che succeda qualcosa perché ciò bloccherebbe l'intero thread. Invece si definisce un callback che viene chiamato una volta completata l'azione. Di solito viene indicato come I/O non bloccante.
Pseudo esempio per il blocco di I/O:
row = db_query('SELECT * FROM some_table');
print(row);
Pseudo esempio per i non-blocking I/O:
db_query('SELECT * FROM some_table', function (row) {
print(row);
});
Questo esempio utilizza lambda (funzioni anonime) come essi sono utilizzati in JavaScript tutto il tempo. JS fa un uso pesante degli eventi, e questo è esattamente ciò che riguarda i callback. Una volta completata l'azione, viene attivato un evento che attiva la richiamata. Questo è il motivo per cui viene spesso indicato come modello evocato o modello asincrono.
L'implementazione di questo modello utilizza un ciclo che elabora e attiva questi eventi. Ecco perché è chiamata la coda eventi o .
Tra i primi quadri coda di eventi includono:
Forse sii un po 'più specifico su cosa non stai capendo? – igorw