Как контролировать порядок выполнения между потоками? - PullRequest
0 голосов
/ 01 марта 2019

Ниже приведена структура обработки данных и результатов печати.Некоторое содержимое будет распечатано во время process_records, поэтому я хочу, чтобы для всех потоков ensure часть могла быть распечатана в самом конце программы, выполняющейся вместе с порядком , как и первая часть нитки, гарантирующая, что часть должна быть распечатанапервый.Как я могу сделать это, не перемещая print_report из Thread.new do?Спасибо

lock = Mutex.new()
thread_num.times do |i|
    threads << Thread.new do
             records = lock.synchronize{db_proxy.query(account_id)}

             result1 = process_records(records) 
             result2 = process_records2(records)
             result3 = process_records3(records)
             ensure
                 print_report(result1, result2, result3)
             end
        }        
    end
end
...