Я пишу приложение, которое будет работать с сетями.
В качестве графического интерфейса я использую rubyqt.
Чтобы определить, работает ли сервер, я должен пропинговать его (с помощью net / ping).
Но я столкнулся с проблемой. Если сервер не работает,
GUI останавливается для тайм-аута, даже если я помещаю код в цикл Thread или IO.popen, например.
Thread.new('switch') do
if Net::PingExternal.new("195.168.255.244",timeout=0.9).ping then
down = false
else
down = true
end
end
остановится на 0,9 секунды. Поскольку QtThreads еще не работает с rubyqt,
у кого-нибудь есть идея, чтобы графический интерфейс не зависал (кроме сокращения времени ожидания)?
Я думал о том, чтобы поместить ping-часть во внешнюю программу, которая записывает состояние (вверх / вниз) в файл, который затем читает реальная программа, но это решение кажется немного неуклюжим.