EventMachine

886 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
886
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×