Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
1-41695
mari
2003-11-03 09:19
2003.11.13
работа с макросами Word


7-42148
SDW_syscoder
2003-09-03 11:05
2003.11.13
Работа с внешним девайсом через COM порт


14-41912
Gorlum
2003-10-21 13:57
2003.11.13
NAV2003


3-40899
Zn
2003-10-20 13:47
2003.11.13
Как заменить NULL на 0.


3-40828
Miwa
2003-10-22 05:45
2003.11.13
С чего начать или Какую СУБД/технологию/литературу посоветуете?




   Наверх