如何获取Mutex.synchronize中的局部变量值?
How to get local variable value in Mutex.synchronize?
我正在努力使代码多线程化以加快数据分析速度。为了避免多线程数据库连接的问题,我使用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
的输出,我怎样才能从 lock.synchronize
中取出 process_records
,同时让它等待来自 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
将记录分配给哪个块returns:
records = lock.synchronize { mdb_proxy.query(account_id) }
我正在努力使代码多线程化以加快数据分析速度。为了避免多线程数据库连接的问题,我使用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
的输出,我怎样才能从 lock.synchronize
中取出 process_records
,同时让它等待来自 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
将记录分配给哪个块returns:
records = lock.synchronize { mdb_proxy.query(account_id) }