Я пытаюсь добавить элемент в хэш, который используется потоком, он выдает ниже сообщение об ошибке 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
Я хочу заблокировать поток и добавить элемент в хэш, позже возобновить поток.