Форум: "WinAPI";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
ВнизДинамическое подключение dll Найти похожие ветки
← →
EgorovAlex (2007-12-05 21:34) [0]Исследую вопрос использования dll, в которой не очень уверен (есть там утечка памяти/ресурсов или нет).
По памяти вроде прояснилось - даже если в длл есть утечка памяти, после выгрузки длл память освобождается, а вот с хендлами не так всё просто оказалось - они не освобождаются после выгрузки библиотеки. Есть какая нибудь возможнось их освободить после выгрузки библиотеки? Я понимаю, что нужно писать код без багов, но это не моя библиотека и я хочу обезопаситься.
← →
DVM © (2007-12-05 21:47) [1]
> Есть какая нибудь возможнось их освободить после выгрузки
> библиотеки?
Если они (хэндлы) тебе известны, то закрывай их. Если неизвестны - то что ты будешь освобождать непонятно.
Вообще выкинуть надо эту библиотеку. Кстати, эта библиотека известная?
← →
EgorovAlex (2007-12-05 21:53) [2]Нет, библиотека не известная. Меня интересует возможность этого. Есть возможность узнать открытые хендлы для процессы. Я знаю, что можно узнать для файла, кто его "держит", а тут практически обратная задача, хотя и гораздо шире - узнать список открытых хендлов у своего процесса
← →
DVM © (2007-12-05 21:57) [3]
> узнать список открытых хендлов у своего процесса
о хэндлах чего вообще речь?
← →
EgorovAlex (2007-12-05 22:03) [4]Тут вопрос перекликается с обломом терминального входа - мне тут сказали знакомые, что это возможно, что остаётся много открытых хендлов, поэтому и не пускает, а диспетчер задач показывает, что хендлы не растут (какие угодно хендлы)
← →
DVM © (2007-12-05 22:07) [5]
> EgorovAlex (05.12.07 22:03) [4]
> Тут вопрос перекликается с обломом терминального входа
Вообще 2000 хэндлов это немало. Они может и не растут, что их больше нет.
← →
EgorovAlex (2007-12-05 22:21) [6]Хорошо, зайдём с другой стороны - минимизация использования хендлов.
Стоит задача мониторинга печати. Что у меня получается для каждого принтера:
1. Хендл принтера (OpenPrinter)
2. Хендл нотификации (FindFirstPrinterChangeNotification)
3. Хендл-флаг окончания мониторинга (CreateEvent) - он используется для того, чтобы функция WaitForMultipleObjects сработала в нужный момент (когда мне нужно).
Итого - 3 хендла на принтер, а если принтеров 1000? А ведь это только обязательные хендлы, есть ещё и рабочие. Может это можно сделать проще?
← →
DVM © (2007-12-05 22:30) [7]
> а если принтеров 1000?
А почему не миллион? Надо вводить ограничения, система не резиновая, например, 256 принтеров.
← →
EgorovAlex (2007-12-05 22:36) [8]Для сервера печати 1000 принтеров это хоть и тяжеловато, но справляется. А в случае кластеров это уже не проблема, там же может быть несколько спулеров печати, и принтеров на них может быть в сумме гораздо больше 2000 (я знаю реальные конфигурации). Сама система же с этим справляется...
← →
Сергей М. © (2007-12-07 08:25) [9]
> даже если в длл есть утечка памяти, после выгрузки длл память
> освобождается
Не факт.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c