我有一个脚本应该在不同的线程中ping主机。单独的线程用于单独的特定主机ping,因为有些ping有时需要比其他ping更长的时间。如果我们等待一个ping - 其他超时比实际更大。
该代码为每个主机创建一个单独的线程。我只是从一些例子中复制粘贴它。我不确定这段代码是否正确。我也有内存泄漏。
threads = []
config.each do |array_item|
host = array_item[0]
packet_size = array_item[1]
threads << Thread.new do
puts "\nCreating a thread for host:#{host} value:#{packet_size}"
ping(host, packet_size)
end
end
threads.each(&:join)
我也遇到堆分析,但无法理解错误。我只是假设线程没有终止。
Analyzing Heap (Generation: 10)
-------------------------------
allocated by memory (4717121) (in bytes)
==============================
3150072 /usr/lib/ruby/2.3.0/timeout.rb:81
1050024 ./pinger.rb:166
./pinger.rb:166
- 指向threads << Thread.new do
我是否需要控制线程分配和某种线程关闭控件?