![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как процедуре ограничить время, память, запись на диски? [D6, D7, WinXP]
Ivanov_F. © (2004-09-08 11:20:00)У меня есть процедура, экспортированная из dll. Я ее вызываю из своей программы.
Мне нужно:
- заверщить ее работу через некоторое время, если она еще работает;
- ограничить занимаемую память;
- запретить запись на диски;
- отловить runtime error'ы.
DLLки пишу не я, они являются как бы входными данными в моей программе. Программа получает на вход DLL и должна вывести, правильно ли сработала процедура.
Если кто-нибудь знает, как сделать хоть что-нибудь из этого, ответьте, пожалуйста.
Digitman (2004-09-08 14:25:00) [1]
> Ivanov_F. © (08.09.04 13:44) [9]
> Как узнать объем памяти, которое занимает программа в памяти?
считай что никак
Ivanov_F. (2004-09-08 13:44:00) [2]Спасибо за все! Я уже понял, как это все сделать. Последний вопрос: Как узнать объем памяти, которое занимает программа в памяти?
Digitman (2004-09-08 12:52:00) [3]
> пока я расчитываю их оставить полсекунды и 32 мегабайта
эт что, значения взятые от балды ? на основании ЧЕГО эти самые "полсекунды" и "32 мегабайта" ?
> Считается вся оперативная память
не лезь в опер.память, ею распоряжается ОС по своему усмотрению ... это тебе не ДОС ... в каждый момент времени ОС имеет право выкинуть весь твой код/данные (или часть этого) из опер.памяти в файл подкачки, а на их месо загрузить из файла подкачки код/данные другого процесса, требующего немедленное обслуживание
Семен Сорокин (2004-09-08 12:36:00) [4]Как это можно отловить?
try..except?
Ivanov_F. (2004-09-08 12:33:00) [5]2Digitman: в программе задается некие константы TimeLimit и MemoryLimit, пока я расчитываю их оставить полсекунды и 32 мегабайта. Считается вся оперативная память, затраченная на процедуру.
2TUser: А если в каком-то потоке произойдет runtime-error, не накроется ли весь процесс. Как это можно отловить?
TUser (2004-09-08 12:07:00) [6]> Это я сейчас и делаю, но мне нужно все делать в одном процессе.
Ну и хорошо. В одном процессе пара потоков.
Digitman (2004-09-08 12:00:00) [7]
> успела сработать за определенное время
какое конкретно время ? откуда оно взялось ? это конкретное время оговорено в ТЗ или где/кем ?
> не превысила память
опять же - с каким конкретным значением размера "памяти" ты собираешься сравнивать что-то на предмет "превышения" ? И - какой памяти ? физической ? виртуальной ? кучи ? стека ? или чего ?
Ivanov_F. (2004-09-08 11:51:00) [8]2TUser: Это я сейчас и делаю, но мне нужно все делать в одном процессе.
2Digitman: Вот критерием правильности и является, то что она успела сработать за определенное время, не превысила память, не записала ничего на диск и вернула допустимое значение.
Digitman (2004-09-08 11:36:00) [9]
> правильно ли сработала процедура
и каковы же критерии оценки "правильности" ?
TUser (2004-09-08 11:33:00) [10]Вызывать ее в отдельном потоке. Прибивать TerminateThread'ом, если еще работаем. Остальное - не знаю.