Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Завершение потоков в dll 
:(
    Опции темы
Чучмек
Дата 27.5.2011, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



При завершении приложения, необходимо завершить работу потоков в dll.
Но при выполнении секции finalization, подключаемого в dll модуля (Потоки вынесены в отдельный модуль), потоки уже убиты.
Аналогично для DLL_PROCESS_DETACH завершающей процедуры  dll. 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Akella
Дата 27.5.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Чучмек @  27.5.2011,  12:23 Найти цитируемый пост)
При завершении приложения, необходимо завершить работу потоков в dll.


Цитата(Чучмек @  27.5.2011,  12:23 Найти цитируемый пост)
Но при выполнении секции finalization, подключаемого в dll модуля (Потоки вынесены в отдельный модуль), потоки уже убиты.


значит не нужно ничего завершать?


или В ЧЁМ ВОПРОС?
PM MAIL   Вверх
Чучмек
Дата 27.5.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



В dll, по необходимости, создается поток.
После выполнения своей задачи поток не уничтожается, а приостанавливается.(Вызывается Suspend в Execute).
Код

procedure TmyThread.Execute;
label start;
begin
...//Выделение ресурсов
start:
...
...
...
Suspend;
if not Terminated then goto start;
...//Освобождение ресурсов.

По необходимости поток повторно запускается.

При завершении приложения,важно освобождение ресурсов.
И только в своем потоке !!! -вызывается CoUnInitialize.

В finalization Все потоки уже преостановленны и вызов Resume не дает эфекта.
За раннее сообщить библиотеке  "что нужно выгружатся"  нет возможности 

Это сообщение отредактировал(а) Чучмек - 27.5.2011, 12:52


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MetalFan
Дата 27.5.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



1. Не использовать suspend
2. Проверять Terminated и ждать по таймауту, к примеру, события для продолжения работы.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Чучмек
Дата 27.5.2011, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(MetalFan @  27.5.2011,  12:57 Найти цитируемый пост)
Не использовать suspend

В finalization не приостановленный поток будет еще живой???


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 27.5.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(MetalFan @  27.5.2011,  12:57 Найти цитируемый пост)
Проверять Terminated и ждать по таймауту, к примеру, события для продолжения работы.

Нет. Поток уже дохлый. 
Проверил
Код

ResetEvent(hEvent);
WaitForMultipleObjects(1, @hEvent, TRUE, INFINITE);//Остановка  в потоке
...
...
...
SetEvent(hEvent);//Запуск



Эфект такой же, как и при Suspend/Resume


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.