Форум: "Потрепаться";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Внизконец или не конец Найти похожие ветки
← →
ИдиотЪ (2003-12-05 15:09) [0]можно ли программно определить, что программа может зависнуть?
можно взять частный случай, цикл
← →
Рамиль (2003-12-05 15:15) [1]Надо писать программы так, что бы оне не могли зависнуть по своей вине.
← →
ИдиотЪ (2003-12-05 15:16) [2]ты никогда не напишешь программу, которая всегда будет работать правильно, иначе она 99% будет только проверками заниматься
← →
Daemys (2003-12-05 15:27) [3]Если прога однажды зависла, она может зависнуть и во второй раз.
← →
han_malign (2003-12-05 15:34) [4]> можно взять частный случай, цикл
> ты никогда не напишешь программу, которая всегда будет работать правильно, иначе она 99% будет только проверками заниматься
- в частном случае цикла, не проверками надо заниматься, а поиском работы - например, дворником ...
← →
Dimman1 (2003-12-05 15:35) [5]Например можно запускать программу как процесс и ждать пока он завершится. Если не завершится через определенное время, то закрывать принудительно и считать зависшей. Конкретно смотри функции: CreateProcess и WaitForSingleObject (полезно, если используешь к примеру внешний архиватор).
Ну а вообще то, программы надо писать так, чтобы они не зависали, в этом я согласен с Рамилем. :)
← →
icWasya (2003-12-05 15:37) [6]Это алгоритмически неразрешимая задача, то есть теоретически невозможно написать программу, которая за конечное число шагов по коду другой программы определяла, зациклится она или нет.
← →
wal (2003-12-05 15:46) [7]И никто не даст гарантии, что та программа, которая проверяет другую программу сама не зависнет (сплошные программы, чуть сам не запутался в том, что написал :)).
С уважением.
← →
ИМХО (2003-12-05 15:51) [8]ИМХО, это равносильно тому, что умерший человек может сказать, что он действительно умер.
← →
han_malign (2003-12-05 15:55) [9]> Это алгоритмически неразрешимая задача
- в Win32, программа должна гарантировать обработку очереди сообщений, с гарантированной задержкой
function _IsHanging(aHangTimeout: DWORD; AWnd: HWND): Boolean;
var
ReturnResult : DWORD;
begin
Result := SendMessageTimeout(AWnd, 0, 0, 0,
SMTO_NOTIMEOUTIFNOTHUNG, 1000 * aHangTimeout, ReturnResult) = 0;
end;
- при аппартной проверке(WatchDog), программа должна с определенным интервалом дергать порт устройства - не попали в таймат - сигнал на линию Reset...
Грамотно написанная, с точки зрения устойчивости, программа - должна обеспечивать своевременный отклик на системные запросы, в другом случае - программа удаляется, программист увольняется...
З.Ы. Требования к устойчивости ПО, уже описаны в стандартах, и все идет к тому, что скоро будут прописаны в законодательстве большинства развитых(и не очень) стран. Из лицензионных соглашений Microsoft, уже, требуют убрать - "Призводитель не несет ответственности за ...". Так что в ближайшем будущем, с производителя "зависающей" программы можно будет получить не только стоимость, но и неустойку...
← →
ИдиотЪ (2003-12-05 16:00) [10]icWasya ©
человек может поглядеть и сказать, зависнет программа или нет, и не надо вечности для этого
Dimman1 ©
оценка времени возможна не для всех процессов
...
вот иногда я смотрю на программы, в которых вертится какой-нибудь гиф и мучительно стараюсь понять, висит или не висит
← →
panov (2003-12-05 16:29) [11]Есть в Windows спец. API-функции для определения, зависла или нет программа.
← →
Игорь Шевченко (2003-12-05 16:33) [12]ИдиотЪ © (05.12.03 15:16)
> ты никогда не напишешь программу, которая всегда будет работать
> правильно, иначе она 99% будет только проверками заниматься
Напишу. Без 99% процентов времени на проверки. Писать программу надо, думая...
← →
ИдиотЪ (2003-12-05 17:01) [13]panov ©
и какие же ?
если программа не отвечает на сообщения, это не говорит о зависании, к примеру
Игорь Шевченко ©
я тоже могу "хелло ворлд" написать без проверок
← →
Думкин (2003-12-05 17:26) [14]
> [13] ИдиотЪ © (05.12.03 17:01)
Можно и сложнее, есть приемчики, мозги правда задействовать надо.
← →
Игорь Шевченко (2003-12-05 17:47) [15]ИдиотЪ © (05.12.03 17:01)
> я тоже могу "хелло ворлд" написать без проверок
Вот этим мы и отличаемся
← →
Soft (2003-12-05 20:33) [16]По моему Постом была сформулирована теорема о невозможности определить состояние незамкнутого алгоритма(алгоритма обменивающегося данными) через конечный промежуток времени. IBM, по моему, за решение этой задачи довольно круглую сумму в долларах давала. Но пока это теорема Ферма-2. Все решается(в контроллерах) аппаратным WatchDog таймером, пока лучшего решения нет.
Решение этой задачи есть частное решение сложной системы, тоесть невозможно научными методами, только интуиция программиста.
← →
panov (2003-12-07 00:57) [17]>ИдиотЪ © (05.12.03 17:01) [13]
http://www.rsdn.ru/article/qna/baseserv/hungapp.xml
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c