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.

0

Share

Download to read offline

EventMachine

Download to read offline

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • 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

Views

Total views

1,117

On Slideshare

0

From embeds

0

Number of embeds

4

Actions

Downloads

5

Shares

0

Comments

0

Likes

0

×