1
require 'celluloid/current'

Celluloid.shutdown_timeout = 1

class Mapper
  include Celluloid

  attr_accessor :value

  def run(num)
      @value = num.times.map { |idx| idx  } 
  end

end

 y = Mapper.spawn
 y.future.run(1000000)

今のところ動作しているようで、アクターは 1 秒後にシャットダウンされます。

  y.value

しかし、上記のように値にアクセスしようとすると、メソッド呼び出しから返された値が利用可能になるまで続きます。

私の考えは、標準 の Timeout.timeout(1) {}と同じように Celluloid.shutdown_timeout を使用することでした

制限時間の 1 秒を超えた場合はブロックを終了します [ Timeout.timeout(1)は不正行為で悪名高いため、使用しないでください]

セルロイド俳優を使用してこれを達成する正しい方法は何ですか?

4

1 に答える 1