我正在尝试在线程正在使用的哈希中添加元素,它在错误以下抛出 linkEvent':在迭代过程中无法向哈希添加新键(RuntimeError)
@serverDown = Hash.new
def eventMessage(message)
@server_thread = Thread.new do
until @serverDown.empty?
@serverDown.each do |key, value|
puts "#{key}"
sleep 3
end
Thread.stop if @serverDown.empty?
end
end
end
if message.include?("down")
state = message.split.last
puts "Adding #{state} to hash"
@serverDown[state] = Time.now.to_i
@server_thread.wakeup unless @server_thread.alive?
end
end
@queue = Queue.new
@queue << "server is down"
@queue << "server is down"
@queue << "server is down"
@queue << "server is up"
@equeue << "unreachable"
until @queue.empty?
event = @queue.pop
if event.include?("down") || event.include?("up")
eventMessage(event)
sleep 3
next
end
puts "#{event}"
end
我想锁定线程并添加元素以进行哈希处理,稍后再恢复线程。