Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-1126100482
avsam
2005-09-07 17:41
2005.10.02
тип файла (bmp или jpeg)?


1-1126598343
Alex_C
2005-09-13 11:59
2005.10.02
Глобальное положение мыши


1-1126259631
BFG9k
2005-09-09 13:53
2005.10.02
Некорректная работа PrinterSetupDialog


1-1126332121
Геннадий
2005-09-10 10:02
2005.10.02
Отладка модуля проекта, входящего в группу проектов


1-1126178903
Xmen
2005-09-08 15:28
2005.10.02
Шифрация файла.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский