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