Я работаю над созданием многопоточного кода для более быстрого анализа данных.Чтобы избежать проблемы многопоточных соединений с базой данных, я использую Mutex для ее блокировки.
lock = Mutex.new()
thread_num.times do |i|
threads << Thread.new do
lock.synchronize{
records = db_proxy.query(account_id)
result = process_records(records)
}
end
end
process_records
также отнимает много времени, но, как обычный метод, поддерживает многопоточные вызовы.Требуется вывод из mdb_proxy.query
, как я могу взять process_records
из lock.synchronize
, в то время как заставить его ждать результата из mdb_proxy.query
, я попытался выполнить следующее, но получил исключение локальной переменной
lock = Mutex.new()
thread_num.times do |i|
threads << Thread.new do
lock.synchronize{
records = mdb_proxy.query(account_id)
}
result = process_records(records)
end
end