![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про потоки
Zuser © (2005-09-05 23:33:00)народ, почему если в DLLке в initialization создать поток, то потом, в finalization при его уничтожении он виснет на WaitFor?
что-то вроде этого:
TMyThread=class(TThread)
protected
procedure Execute; override;
end;
var
MyThread: TMyThread
procedure TMyThread.Execute;
begin
while not Terminated do;
end;
initialization
MyThread := TMyThread.Create(False);
finalization
MyThread.Terminate;
MyThread.WaitFor; { вот тут }
MyThread.Free;
end.
Digitman (2005-09-06 12:07:00) [1]
> Zuser (06.09.05 11:56) [9]
это НОРМАЛЬНЫЙ вариант.
длл в 1-ю очередь для этого и существуют.
не нравится ?
реализуй свою длл как ole/com-сервер
Zuser (2005-09-06 11:56:00) [2]это плохой вариант, неужели нет других способов?
Digitman (2005-09-06 11:07:00) [3]
> Zuser (06.09.05 10:46) [6]
> exe-файл ничего не знает о dll
сделай так чтобы знал
kblc (2005-09-06 10:56:00) [4]попробуй пишсать всё в
begin .. end..dpr библиотеки
Zuser (2005-09-06 10:46:00) [5]к сожалению, exe-файл ничего не знает о dll. он умеет только загружать и выгружать "нужные" dll-ки.
Digitman (2005-09-06 10:30:00) [6]
> 1. почему?
из-за блокировок, устанавливаемых системой в эти моменты
> 2. как менять логику?
просто экспортируй пару ф-ций - одна будет стартовать поток, другая завершать его и ожидать завершения
Zuser (2005-09-06 10:10:00) [7]Видимо да, но все равно остается два вопроса:
1. почему?
2. как менять логику? должена выполняться фоновая задача которая реализована в DLL (что-то вроде плагина). принимаются любые варианты.
Digitman (2005-09-06 09:02:00) [8]
> Zuser
при иниц-ции библ-ки ожидать старт потока бессмысленно, равно как и бессмысленно при финализации библ-ки ожидать завершение потока - ты никогда не дождешься этих событий.
меняй логику.
Zuser (2005-09-06 08:47:00) [9]а можно чуть-чуть поподробнее?
Alexander Panov (2005-09-06 00:30:00) [10]Zuser (05.09.05 23:33)
while not Terminated do;
Кто сказал, что основной поток получит управление за приемлимый промежуток времени?