Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Вопрос про потоки   Найти похожие ветки 

 
Zuser   (2005-09-05 23:33) [0]

народ, почему если в 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.


 
Alexander Panov ©   (2005-09-06 00:30) [1]

Zuser   (05.09.05 23:33)
while not Terminated do;  


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


 
Zuser   (2005-09-06 08:47) [2]

а можно чуть-чуть поподробнее?


 
Digitman ©   (2005-09-06 09:02) [3]


> Zuser


при иниц-ции библ-ки ожидать старт потока бессмысленно, равно как и бессмысленно при финализации библ-ки ожидать завершение потока - ты никогда не дождешься этих событий.

меняй логику.


 
Zuser   (2005-09-06 10:10) [4]

Видимо да, но все равно остается два вопроса:
1. почему?
2. как менять логику? должена выполняться фоновая задача которая реализована в DLL (что-то вроде плагина). принимаются любые варианты.


 
Digitman ©   (2005-09-06 10:30) [5]


> 1. почему?


из-за блокировок, устанавливаемых системой в эти моменты


> 2. как менять логику?


просто экспортируй пару ф-ций - одна будет стартовать поток, другая завершать его и ожидать завершения


 
Zuser   (2005-09-06 10:46) [6]

к сожалению, exe-файл ничего не знает о dll. он умеет только загружать и выгружать "нужные" dll-ки.


 
kblc ©   (2005-09-06 10:56) [7]

попробуй пишсать всё в
begin .. end. .dpr библиотеки


 
Digitman ©   (2005-09-06 11:07) [8]


> Zuser   (06.09.05 10:46) [6]


> exe-файл ничего не знает о dll


сделай так чтобы знал


 
Zuser   (2005-09-06 11:56) [9]

это плохой вариант, неужели нет других способов?


 
Digitman ©   (2005-09-06 12:07) [10]


> Zuser   (06.09.05 11:56) [9]


это НОРМАЛЬНЫЙ вариант.

длл в 1-ю очередь для этого и существуют.

не нравится ?

реализуй свою длл как ole/com-сервер



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.119 c
11-1107273219
TeNY
2005-02-01 18:53
2005.10.02
Динамически добавить строку в меню popup menu


1-1126116257
The Only
2005-09-07 22:04
2005.10.02
bdu?


3-1124435578
kyn66
2005-08-19 11:12
2005.10.02
Как поступить правильно, соблюдая каноны программирования?


1-1126243376
Stepan
2005-09-09 09:22
2005.10.02
Отладка в Delphi


3-1124384858
redlord
2005-08-18 21:07
2005.10.02
как увеличить скорость удаления записей