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)因行为不端而臭名昭著,因此不使用它]
使用赛璐珞演员实现这一目标的正确方法是什么?