2012-04-20 4 views
0

私は、ジョブリストを取得し、ウサギで待ち行列に入れてキューから作業者ポップジョブを実行するシステムをRuby(rabbitmq、parallel gem)それら。マルチスレッドジョブを実行するワーカーでRabbitMQを使用する - 並列宝物

準備ができたら、キューから1つのジョブをポップするのは簡単ですが、各ワーカーに5つのスレッドを実行させて、5つのスレッドがすべて処理しているときにワーカーがポップしないようにしたいキューからジョブが削除されます。スレッドが解放されると、ワーカーはキューからジョブを受け入れます。

パラレルgemを使用すると、マルチスレッドプロセスを作成するための唯一の方法は、次のコードを使用することです。

results = Parallel.map(array, :in_processes => MAX_PROCESSES) do |item| 
item.process 
end 

私は

while true 
cur_threads = Parallel.get_cur_threads 
if cur_threads < MAX_PROCESSES 
    # get another job from queue 
    # allocate a thread for the job 
end 

任意のアイデアのような何かをしたいと思います?

答えて

0

私はこれが本当に古かったと知っていますが、おそらくwork_queue gemを使用して探しているものを手に入れることができると思います。

関連する問題