Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-99620
Kvorubin
2003-12-16 12:42
2003.12.30
Как убрать кнопочку с нижней полосы ???


1-99637
BaDeVlad
2003-12-16 17:17
2003.12.30
Как в Richedite сделать Selectionbar?


1-99591
frost
2003-12-17 11:10
2003.12.30
Internal error SY576


14-99719
Delphi5.01
2003-12-08 21:18
2003.12.30
Kak vozmojno izmenit personalnuiu informaciu na saite?


4-99828
SkyRanger
2003-11-03 14:45
2003.12.30
Аналог StrTo... и ...ToStr на WinAPI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский