并发: 厨师同时接收到了2个客人点了的菜单须要处理.
顺序执行: 若是只有一个厨师,那么他只能一个菜单接着一个菜单的去完成.
并行执行: 若是有两个厨师,那么就能够并行,两我的一块儿作菜.html
https://ruby-china.org/topics/11248segmentfault
一旦调用外部IO操做,当前线程就会释放CPU内核控制权,另一个线程就会得到CPU资源。安全
https://ruby-china.org/topics/23183ruby
https://draveness.me/sidekiq多线程
fiber并发和多线程并发的原理其实差很少,都是当前执行线程(纤程)在执行到外部IO调用的时候,放弃CPU控制权,让另外一个线程(纤程)来获取CPU。主要差别在于fiber并发只占用1个操做系统线程,由应用程序来调度纤程;而多线程并发占用n个操做系统线程,由Ruby VM来调度线程。并发
所以二者的性能差别主要是调度方式带来的:纤程的场景切换很是轻量级,而多线程的场景切换代价高于纤程,所以理论上来讲fiber并发性能会更好异步
https://segmentfault.com/a/1190000010211352ide
http://www.importnew.com/28021.html性能
http://20bits.com/article/an-eventmachine-tutorial操作系统
https://www.slideshare.net/KyleDrake/hybrid-concurrency-patterns
Celluloid::Proxy::Async
对象会截获方法的调用, 而后保存到 Actor 并发对象的调用队列中, 程序没必要等待响应就能够往下执行(异步). 每一个并发对象都有一个本身调用队列, 而且按顺序地一个接一个执行里边的方法调用.
https://tonyarcieri.com/a-gentle-introduction-to-nio4r