1. EVENTMACHINEfast, simple event-processing library for Ruby programs
2. EventMachine Components• Reactor• Your code (callbacks)• Tread pool (non blocking long running tasks)
3. Reactor• Main loop / Central point• Dispatch call to business code (your code)• Single threaded !
4. Reactor• run-reactor.rb• EM.run block until its stopped• its not really blocking, the reactor pattern is running forever ;)
5. Your code• Called by reactor• blocking ! (called by a single thread dispatcher aka reactor)
6. Your code• each timer own a callback, like any code like network call etc....• a long running task will block the reactor
7. Tread pool• Pool fixed size !• Dont block the reactor if you have a long running task• use the thread pool !
8. Tread pool• EM.defer -> run the callback inside on thread on the pool thread• Reactor continue to dispatch to other code. nice !
9. simple server• module implements callbacks: easy !• see the EventMachine.run -> launch the reactor• Inside reactor -> start server :)
10. contact / more infos• http://www.mathieu-elie.net -> tech blog -> and all concact infos (github, linkedin, and so on...)• available for freelance• questions ? feel free to mail me :)