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

Вниз

Выгрузить библиотеку...   Найти похожие ветки 

 
@Ujin   (2003-10-31 13:20) [0]

Есть библиотеки, хранящие некоторы классы. Для каждого класса имеется счетчик объектов, ссылающихся на этот класс. Каким образом можно выгрузить библиотеку, когда счетчик ссылок обнуляется?...
Дело в том, что в деструкторе класса выгрузку библиотеки произвести нельзя. Есть ли какая-то альтернатива?


 
Юрий Федоров   (2003-10-31 13:22) [1]

Думаю что только снаружи.
В COM насколько я понимаю, проверка DllCanUnloadNow производится по таймеру.
Тут можно передавать в нее CallBack, который будет ее выгружать путем отправки PoasMessage


 
@Ujin   (2003-10-31 13:29) [2]

Юрий Федоров >
Какраз по таймеру я сейчас и работаю... Т.е. не совсем по таймеру... У меня есть процесс, который занимается проверкой счетчиков классов и отгружает неиспользуемые библиотеки... Но мне этот подход не совсем нравится из тех соображений, что некоторые классы могут использоваться "раз в 100 лет", а некоторые буквально постоянно, а система должна быть общей (однотипной) для всех библиотек... Вот загвоздочка получилась при переписывании объектов-оболочек для библиотек.
Слепил общий интерфейс для заргузки/отгрузки библиотеки и к нему базовый класс, реализующий функции. И очень хочется уйти от многопоточной схемы...


 
Юрий Зотов   (2003-10-31 13:50) [3]

Если я правильно понял, то библиотеку надо выгружать, когда ВСЕ счетчики ссылок станут нулевыми. Стало быть, в ней нужен ГЛОБАЛЬНЫЙ счетчик, который инкрементируется в конструкторе и декрементируется в деструкторе КАЖДОГО класса библиотеки. Если он стал нулевым - библиотека выгружается. Как именно - без разницы, только, конечно, не из нее самой. Например, она может послать сообщение-запрос на свою выгрузку окну или спящему потоку в EXE (cм. PostMessage, PostThreadMessage, WaitForMsgMultipleObjects), или может освободить любой объект синхронизации, который опять-таки ожидается спящим потоком в EXE (соответственно, тот проснется и выгрузит библиотеку).



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

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

Наверх




Память: 0.45 MB
Время: 0.032 c
1-41590
Vinter
2003-11-04 10:10
2003.11.13
Вапрос по INI файлам


3-40790
AlexPul
2003-10-22 13:05
2003.11.13
Как сделать поля TIBQuery редактируемыми.


14-42115
Екатерина
2003-10-14 11:58
2003.11.13
Ищу delphi-2 или 3 на дискетах.


14-42043
Marser
2003-10-14 00:22
2003.11.13
Панове!


1-41385
kavlad
2003-10-30 12:28
2003.11.13
Все (почти) пропало





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский