Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое подключение 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]


> Есть какая нибудь возможнось их освободить после выгрузки
> библиотеки?

Если они (хэндлы) тебе известны, то закрывай их. Если неизвестны - то что ты будешь освобождать непонятно.

Вообще выкинуть надо эту библиотеку. Кстати, эта библиотека известная?


Наверх

Титульная страница Поиск, карта сайта Написать письмо