私はルビーのマルチスレッディングにかなり慣れていないため、開始方法について混乱していました。現在アプリを作成していますが、大量の画像を取得する必要があるため、別のスレッドで実行したいと考えています。以下のコードに示すようにプログラムを実行したかったのです。
問題: ここで見られる問題は、bar_method のフェッチが速くなり、スレッドが終了するため、キューに追加され続けるが処理されないことです。新しいアイテムがキューに追加されたことを bar_method スレッドに警告する同期の方法はありますか?
def foo_method
queue created - consists of url to fetch and a callback method
synch = Mutex.new
Thread.new do
bar_method synch, queue
end
100000.times do
synch.synchronize do
queue << {url => img_url, method_callback => the_callback}
end
end
end
def bar_method synch_obj, queue
synch_obj.synchronize do
while queue isn't empty
pop the queue. fetch image and call the callback
end
end
end