2

为了理解赛璐珞,我编写了以下脚本。

require 'celluloid/current'

class Processor
  include Celluloid

  def perfom(number)
    puts "#{number} ... (#{Thread.current}) ..."
    sleep(number%3)
    puts "Launch finish!"
    return number
  end
end

pool = Processor.pool(size: 3)

futures = (1..7).map do |i|
  pool.future(:perfom, i)
end
puts futures.map(&:value)

pool.terminate

一切正常,我想避免调用池上的终止。

所以我尝试使用主管,但它提高了我uninitialized constant Celluloid::SupervisionGroup

搜索后我发现这个(在弃用的文件夹中):(https://github.com/celluloid/celluloid-supervision/blob/master/spec/celluloid/deprecate/supervision/supervision_group_spec.rb

我想让工作像这样:

supervisor = Celluloid::SupervisionGroup.run!
pool       = supervisor.pool(Processor, size: 3, as: :worker)

futures = (1..7).map do |i|
  pool[:worker].future(:perfom, i)
end
puts futures.map(&:value)

如何使用新系统让工作成为未来、主管和池?

4

1 回答 1

2

赛璐珞::SupervisionGroup重命名为赛璐珞::Supervision::Container

https://github.com/celluoid/celluloid/wiki/DEPRECATION-WARNING

于 2015-12-07T00:24:12.200 回答