![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Dll
Gu © (2011-08-28 21:24:00)Если одна программа стартовала, загрузила и работает с длл, то другая прога, которая запускается после первой и тоже загружает эту длл - загрузит ее с диска или из памяти? :)
И. Павел (2011-08-29 12:11:00) [1]> и зачем тогда инет?
Чтобы скачивать умные книги даже если их нет в продаже :)
Anatoly Podgoretsky (2011-08-29 12:04:00) [2]> Gu (29.08.2011 11:08:12) [12]
Что бы ты задал такой вопрос "зачем тогда инет"?
Юрий Зотов (2011-08-29 11:33:00) [3]> Gu (29.08.11 11:08) [12]
Жаль. Очень жаль.
Inovet (2011-08-29 11:10:00) [4]> [12] Gu (29.08.11 11:08)
> и зачем тогда инет?
Т.е. читать умные книги не надо?
Gu (2011-08-29 11:08:00) [5]
> Читайте умные книги
а эту ветку для прочитавших умные книги сделали я так понимаю? и зачем тогда инет?
Юрий Зотов (2011-08-29 06:05:00) [6]
> Для отлова загрузки/выгрузки процесса
Точнее, не процесса, а самой DLL, конечно.
Юрий Зотов (2011-08-29 06:03:00) [7]
> Gu (28.08.11 21:24)
Кстати, чтение Рихтера, позволит понять, что вопрос
> Если одна программа стартовала, загрузила и работает с длл,
> то другая прога, которая запускается после первой и тоже
> загружает эту длл - загрузит ее с диска или из памяти?
поставлен некорректно.
Юрий Зотов (2011-08-29 05:59:00) [8]
> Gu
Поэтому Игорь прав - читать надо Рихтера, а не "самопальные" статьи в Инете. Это убережет от многих ошибок.
Юрий Зотов (2011-08-29 05:54:00) [9]
> Gu (28.08.11 21:45) [1]
> DLL_THREAD_ATTACH - в оперативную память загружается новый
> процесс, использующий ресурсы и/или код из данной библиотеки;
>
> DLL_THREAD_DETACH - один из процессов, использующих библиотеку,
> "выгружается" из памяти.
В статье неточность. Не процесс загружается/выгружается, а поток создается/завершается. Внутри процесса.
Для отлова загрузки/выгрузки процесса используются не
DLL_ THREAD _ATTACH/DETACH,
а
DLL_ PROCESS _ATTACH/DETACH
Gu (2011-08-29 02:11:00) [10]спасибо
Германн (2011-08-29 00:30:00) [11]
> Gu (28.08.11 22:14) [3]
>
> меня интересует в частности: если длл уже загружена, в ней
> есть некоторые глобальные переменные
Глобальные они для "проекта", т.е. для исходников проекта, но не для уже собранной dll. Эти "глобальные переменные" имеют совсем разные реальные адреса, ибо Dll загружается в АП того процесса, который "загрузил" эту dll. Т.е. сколько процессов загрузило эту библиотеку, столько и экземпляров этих переменных в памяти.
Юрий Зотов (2011-08-28 23:07:00) [12]> Gu (28.08.11 22:14) [3]
> если длл уже загружена, в ней есть некоторые глобальные
> переменные
Эти переменные между программами не разделяются.Они свои собственные для каждого как бы "экземпляра" DLL.
> которые инициализируются при загрузке этой длл.
> при загрузке второй прогой - что с ними будет?
Смотря где они инициализируются. Если в самой DLL (например, при DLL_PROCESS_ATTACH), то будут инициализированы. А если их инициализирует первая программа, то во второй они останутся неинициализированными.
Игорь Шевченко (2011-08-28 22:20:00) [13]будут неинициализированы
"Читайте умные книги -- причём внимательно -- и думайте головой. Ваша кипучая деятельность на форумах реальных знаний и умений не даст; максимум, что получите, -- это обрывки сведений о различных аспектах программирования без всякой системы."
Gu (2011-08-28 22:14:00) [14]меня интересует в частности: если длл уже загружена, в ней есть некоторые глобальные переменные, которые инициализируются при загрузке этой длл. при загрузке второй прогой - что с ними будет?
~AQUARIUS~ (2011-08-28 21:49:00) [15]В общем случае это не должно вас волновать - как была загружена длл. Решением этого вопроса занимается ОС
Gu (2011-08-28 21:45:00) [16]интересует конкретный момент вот отсюда:
http://citforum.ru/programming/digest/dlldelphi.shtml
там описывается:
DLL_THREAD_ATTACH - в оперативную память загружается новый процесс, использующий ресурсы и/или код из данной библиотеки;
DLL_THREAD_DETACH - один из процессов, использующих библиотеку, "выгружается" из памяти.