![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]()
Уважаемые прогеры, вот такая не простая задача. Не буду вдаваться в излишние подробности, прошу вашего совета в решении в вот какой проблемы.
Есть приложение, в котором выполняется некая функция, которая подгружается из библиотеки. Каким образом реализовать возможность прерывания работы данной функции, и выгружать всю потребленную память, что бы избежать утечки. Нужно сделать что-то вроде как в php, при превышении некоторого времени, нужно прервать выполнение. Вставлять внутри функции if flag then exit не вариант, технически невозможно. У меня в мыслях пока крутятся 2 варианта. Первый. Если запихнуть выполнение функции в поток, и при необходимости вызывать уничтожение, но тогда все не освобожденные объекты, останутся в памяти. Не могу найти возможность получить память, которая выделяется потоком, что бы её потом освободить вручную. Второй. Запихнуть функцию в отдельное приложение, и просто завершать его. Но не знаю о корректности такого метода. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Какие результаты возвращаются функцией?
я имею ввиду Result что содержит? (return в Си) |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]()
строку string
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Черт(( Мой способ не прокатит. Там булев тип нужен
уж извини, тут помочь не смогу |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]()
Поделись пожалуйста своим соображением, очень интересно, как возвращаемый результат может решить проблему?
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Я делал в цикле проверку
Код:
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]()
проблема в том, что если зависнет, то нужно прервать выполнения, т.е. проблема не в зависании самого приложения, а в том, что функция будет выполнятся до завершения работы приложения, а этого не нужно
|
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Мне кажется в мой код не поняли)
Там Application.ProcessMessages(), что бы не висло приложение и в том же цикле идет подсчет количетсва тиков, секунд или прочее. если функция исчерпала лимит времени, грубо ее вырубить. для этих целей еще можно TTimer прикрутить, я думаю |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]()
Скажу больше, есть серверное приложение, которое обрабатывает кучу запросов пользователей, и есть программеры, которые постоянно обновляют функцию, и если где то есть ошибка, то нужно прервать выполнение функции, иначе служба повиснет, или на крайняк сожрет кучу процессорного времени и оперативы.
|
![]() |
![]() |
![]() |
#10 | |
Пользователь
Регистрация: 15.04.2009
Сообщений: 16
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
прерывание | Ирида | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 27.10.2011 04:36 |
Прерывание | VKorablev | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 15.04.2011 21:12 |
6 прерывание | ленусик | Фриланс | 1 | 03.06.2008 16:22 |
6 прерывание | ленусик | Помощь студентам | 5 | 30.05.2008 16:57 |