0

ジョブのリストを取得し、それらをうさぎでキューに入れ、ワーカーがジョブをキューからポップして実行するシステムをルビー(rabbitmq、パラレルジェム)で構築しています。

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

Parallel 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

何か案は??

4

1 に答える 1

0

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

于 2012-07-30T16:27:02.863 に答える