Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.003 c
3-1268216193
Xmen
2010-03-10 13:16
2011.12.11
Экспорт из Excel в FireBird


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


15-1313174177
Anatoly Podgoretsky
2011-08-12 22:36
2011.12.11
induc.2


4-1242382646
Игорь
2009-05-15 14:17
2011.12.11
Функция IsProcessInJob в Windows 2000


15-1309379404
Юрий
2011-06-30 00:30
2011.12.11
С днем рождения ! 30 июня 2011 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский