Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.30;
Скачать: CL | DM;

Вниз

конец или не конец   Найти похожие ветки 

 
ИдиотЪ ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
14-99715
Думкин
2003-12-08 08:43
2003.12.30
Встреча в Новосибирске. Отчет


3-99500
Ru
2003-12-04 11:35
2003.12.30
Об SQL


1-99622
abr
2003-12-16 18:14
2003.12.30
focus


3-99437
AlexWebIn
2003-12-05 15:02
2003.12.30
Какие компоненты лучше ипользовать для создания отчётов?


3-99434
Zhenja
2003-12-04 00:21
2003.12.30
Работа с локальной базой по сети