我有一个用Ruby编写的程序,后端有Sql Server 2008。现在我正面临一个问题,我将在下面讨论这个问题。
考虑我有functionA()
和functionB()
。正在循环调用fuctionA()
和functionB()
。当然它是DB,在这些函数内的每次调用之后连接都是打开和关闭的。
我在1m之后安排了Rufus调度程序,默认情况下在自己的线程中调用fuctionA()
。当Rufus中的functionA()
触发时,程序会终止,请记住functionA()
和functionB()
在循环中不断运行。当我在Rufus中注释functionA()
时,程序顺利执行。可能是什么原因?请指导。
class TestRufus
def初始化
@dps =无
@mu = Mutex.new
结束
def get_data()
victim_device = VictimDevice.new()
app_config = YAML.load_file(“#{File.dirname( FILE )} /../../ config / sa.gw.c.victim.yml”)
scheduler = Rufus :: Scheduler.new
scheduler.every“10s”做
handle_rufus
结束
loop do
begin
@mu.synchronize {
@dps = victim_device.get_device_proximitysett(8)
}
puts "DeviceID : #{@dps.device_id} AlertDistance: #{@dps.victim_prox_alert_dist} VoilationDistance : #{@dps.victim_prox_viol_dist}"
rescue => e
time_of_error = Time.now.gmtime.to_s()
puts("Error occurred: #{time_of_error} - #{e.message}")
end
end
end #end of function
def handle_rufus()
puts 'In Rufus.'
begin
@mu.synchronize {
@dps = victim_device.get_device_proximitysett(8)
}
rescue => e
puts 'Error #{e.message}'
end
puts "Rufus got! #{@dps.device_id} "
puts 'Out Rufus.'
end
结束#class of class
obj = TestRufus.new obj.get_data()
提前谢谢。