[email protected]:~$

  • Celluloid中的Atom Mode与锁

    Tags: Ruby

    Celluloid默认是Atom Mode执行的, 这种模式下可以中断当前执行的任务 先执行下一个 Celluloid提供了一个sleep方法,在Actor内部调用sleep时会中断当前Fiber并且用timer异步来恢复 def before_suspend(task) @timers.after(@interval) { task.resume } end 当中断当前的TaskFiber时,Actor即可处理下一个message,被中断的message等待timer去恢复自身 def task(task_type, method_nam...

  • Celluloid::Actor结构与调用过程

    Tags: Ruby

    ruby是面向对象语言,但是Celluloid做到了无需更换代码,仅在类中include Celluloid就可以进行面向Actor编程 class A include Celluloid def foo puts "bar" end end 此时A已经代表一个Actor类 a = A.new a.class #A a.class.ancestors #[A, Celluloid::InstanceMethods, Celluloid, Object, PP::ObjectMixin, Kernel, BasicO...

  • ActiveSupport::Concern学习

    Tags: Rails Ruby

    ##为什么需要使用ActiveSupport::Concern active_support/concern.rb中已解释的很清楚 简要的总结下 ———————— module Bar需要在included时调用module Foo的方法 此时需要在class C中include Bar就需要先include Foo 但是像这样使用的时候需要关心依赖问题是很不爽的,我们希望使用Bar则include Bar即可,不应该再去管Bar的依赖问题 module Bar include Foo #..... end 这样我们就可以只incl...