Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про потоки


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;  


Кто сказал, что основной поток получит управление за приемлимый промежуток времени?


Наверх

Титульная страница Поиск, карта сайта Написать письмо