Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.11;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1313501980
TInd
2011-08-16 17:39
2011.12.11
Работа с TIFF.


15-1314177562
P
2011-08-24 13:19
2011.12.11
Состояние/позиция окна в Windows 7


15-1313785804
Юрий
2011-08-20 00:30
2011.12.11
С днем рождения ! 20 августа 2011 суббота


2-1314608210
Аркстант
2011-08-29 12:56
2011.12.11
Navigate2 в фрейме


15-1313853077
RGV
2011-08-20 19:11
2011.12.11
HP pavilion dv6-6160er