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