EventMachine

968 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
968
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×