Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"Concurrencia" El event loop simplificado

"Concurrencia" El event loop simplificado

Entender el modelo de concurrencia de JS es una tarea pesada, la idea de esta plática es hacerlo levemente más accesible. No para hacernos mejores programadores directamente, sino con la intención de entender un modelo básico de la computación moderna. Presentado en ChelaJS

Roberto Hidalgo

February 04, 2015
Tweet

More Decks by Roberto Hidalgo

Other Decks in Technology

Transcript

  1. var app = require('http').createServer(handler); var io = require('socket.io')(app); app.listen(80); io.on('connection',

    function (socket){ var user = null; socket.on('join', function (userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); socket.on('message', function(message){ io.emit('msg', user+': '+message); }); socket.on('disconnect', function(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); });
  2. var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas =

    [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  3. require var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas

    = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  4. pregunta var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas

    = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  5. pregunta hhg2g.compute var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var

    lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  6. console.log var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas

    = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  7. pregunta hhg2g.compute var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var

    lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  8. pregunta hhg2g.compute anonymous var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){

    var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  9. pregunta hhg2g.compute anonymous var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){

    var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  10. pregunta hhg2g.compute console.log anonymous var hhg2g = require('hhg2g'); function pregunta(){

    hhg2g.compute(function(respuesta){ var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  11. pregunta hhg2g.compute anonymous console.log var hhg2g = require('hhg2g'); function pregunta(){

    hhg2g.compute(function(respuesta){ var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  12. var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas =

    [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’);
  13. resultado stack event loop io.on('connection', function conn(sock){ var user =

    null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); });
  14. resultado stack event loop io.on io.on('connection', function conn(sock){ var user

    = null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); });
  15. resultado stack event loop io.on io.on('connection', function conn(sock){ var user

    = null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); });
  16. resultado stack event loop conn io.on('connection', function conn(sock){ var user

    = null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); });
  17. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop conn resultado
  18. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop conn sock.on sock.on sock.on resultado
  19. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join conn sock.on sock.on sock.on resultado
  20. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join conn resultado
  21. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado
  22. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado
  23. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join resultado
  24. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join io.emit resultado
  25. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join io.emit resultado
  26. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join resultado
  27. io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){

    user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado