Por lo tanto, en javascript dado que es un evento controlado por su naturaleza, parece que setTimeout no bloquea. Esto significa que si hago esto:setTimeout sin bloqueo en javascript vs sleep en ruby
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
Se dará salida 'prints first!!'
y luego 'sleeping'
.
El intérprete js no esperará hasta que se complete setTimeout, sino que ejecuta el fragmento de código que se encuentra debajo. Cuando pasan 10ms, entonces ejecuta la función de devolución de llamada.
Ahora he estado jugando con ruby recientemente. Sé que tiene soporte no bloqueante en la biblioteca de máquina de eventos. Pero me pregunto si podemos lograr algo similar al ejemplo de setTimeout que acabo de escribir en javascript con sleep
o cualquier función en ruby de forma nativa sin soporte de máquina de eventos. ¿Es esto posible usando un programa de cierre o un bloque o algo así? Gracias.
sí, no parece que el hilo vaya a ser algo que voy a usar. Sé que se necesita hacer sincronía con la máquina de eventos, pero solo tenía curiosidad. gracias –
El gran problema con los hilos que activan devoluciones de llamada asincrónicas es forzar la ejecución de ese bloque de devolución de llamada en el hilo de llamada. Esto es complicado a menos que tenga un bucle de eventos adecuado donde haya lugares bien definidos para ejecutarlos. – tadman