Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

EventMachine

1,011 views

Published on

  • Be the first to comment

  • Be the first to like this

EventMachine

  1. 1. EventMachine11 avril 2012pierre couzy
  2. 2. Pourquoi• Idée initiale : se débarrasser des IO bloquantes• Les patterns les plus fréquents • Du cache • Des threads • De l’asynchrone • Le pattern Reactor
  3. 3. Le principe• Supprimer la dépendance 1-1 entre thread et IO. Approche Thread-on-event
  4. 4. Qui ?• Node• Python• Java• C#• …• Ruby
  5. 5. Comment ça marche ?• Les tâches bloquantes sont déléguées à l’OS• Ruby fournit à l’OS les moyens de rappeler votre code• Deferrable • C’est la classe de base • Elle définit un pattern de callback • callback : quand tout va bien • errback : le reste du temps
  6. 6. la Boucle d’EventMachine • EM.run • EM.stop • EM.next_tick • EM.deferhttp://timetobleed.com/eventmachine-scalable-non-blocking-io-in-ruby/
  7. 7. Les threads• next_tick renvoie sur le thread principal• defer renvoie sur le threadpool (20 par défaut)
  8. 8. EventMachine & callbacks• Deferrable force l’utilisation d’un callback .. Dans lequel on va réutiliser le même pattern .. Qui va lui aussi imposer un callabck et un errback … et ça va vite devenir très difficile à relire.
  9. 9. Un peu de sucre ?• Empiler les callbacks, c’est laid.• Solution : les fibres • Fiber : thread coopératif • Le développeur maîtrise l’état • Le code rend la main explicitement (yield)
  10. 10. Exemple fibres
  11. 11. Et après ? EM::synchronyhttp://www.youtube.com/watch?v=mPDs-xQhPb0
  12. 12. EventMachine• C’est super ! • Code lisible avec EM::synchrony • Utilisation optimale des threads• C’est nul ! • C’est TRES fragile • Toutes les libs doivent suivre

×