我有以下程序结构。
client = Client.new
params = client.get_params
pool = client.pool(size: params.size)
futures = params.map do |p|
pool.future(:perform_work, p)
end
futures.map(&:value)
客户端是启用赛璐珞的类,使用include Celluloid
. 在我尝试循环执行程序之前,这很有效。我需要根据从外部数据馈送中收到的参数数量动态调整工作人员池的大小。
client = Client.new
pool = client.pool(size: 1)
loop do
params = client.get_params
....
**? pool.resize(size: params.size) ?**
....
futures = params.map do |p|
pool.future(:perform_work, p)
end
futures.map(&:value)
sleep 1
end
我尝试在随后的循环中包含池创建,pool.terminate
但它是垃圾邮件线程并导致演员崩溃。