0
私は以下のプログラム構造を持っています。セルロイドサイズ変更プール
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
でループにプールの作成を含めてみましたが、それは、スレッドをスパムと俳優のクラッシュにつながるです。 pool.sizeを設定