Quindi, in javascript dal momento che è guidato dagli eventi per sua natura, sembra che setTimeout non blocchi. Questo vuol dire che se faccio questo:setTimeout non bloccante in javascript vs sleep in ruby
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
Sarà uscita 'prints first!!'
e poi 'sleeping'
.
L'interprete js non aspetterà che setTimeout venga eseguito, ma esegue immediatamente il pezzo di codice sottostante. Quando passa 10 ms, esegue la funzione di callback.
Ora ho giocato di recente con Ruby. So che ha un supporto non bloccante nella libreria di macchina degli eventi. Ma mi chiedo se possiamo ottenere qualcosa di simile all'esempio setTimeout che ho appena scritto in javascript con sleep
o qualsiasi funzione in ruby in modo nativo senza supporto di macchina degli eventi? E 'possibile tutto questo usando la proc o il blocco di chiusura o qualcosa del genere? Grazie.
sì, non sembra che il thread sarà qualcosa che userò. so che async deve essere fatto con la macchina degli eventi, ma ero solo curioso. grazie –
Il grosso problema con i thread che attivano le chiamate asincrone sta provando a forzare l'esecuzione di quel blocco callback sul thread chiamante. Questo è complicato a meno che tu non abbia un ciclo di eventi appropriato in cui ci siano luoghi ben definiti per eseguirli. – tadman