0
我建立一個系統,它利用作業列表紅寶石(RabbitMQ的,平行的寶石),排隊起來兔,然後有工人彈出工作從隊列執行他們。使用的RabbitMQ與運行多線程工作的工人 - 並行寶石
很容易讓工作人員在隊列準備就緒時將單個作業從隊列中彈出,但我希望讓每個工作人員運行5個線程,以便當所有5個線程正在處理時,該工作人員不會彈出任何工作不在隊列中。當一個線程變爲空閒時,工作人員從隊列中接受一個工作。
使用並行寶石,我看到創建多線程程序的唯一方法是使用下面的代碼。
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
任何想法?