Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];

Вниз

2 экземпляра DLL   Найти похожие ветки 

 
Andrew_A   (2002-03-26 13:28) [0]

Из двух потоков, созданных в одном приложении, надо ОДНОВРЕМЕННО вызвать один и тот же метод из DLL. DLL загружаю динамически в каждом потоке, обращаюсь к методу и получаю AV. Похоже, что работа ведется с одним и тем же экземпляром DLL. Подскажите, можно ли решить такую задачу?

Спасибо.

Андрей.


 
Digitman   (2002-03-26 13:37) [1]

Работа идет с одним и тем же экз-ром DLL - так и должно быть.
AV ты получаешь, очевидно, по иной причине. Приводи фрагмент кода загрузки/выгрузки DLL


 
Andrew_A   (2002-03-26 13:54) [2]

Код загрузки/выгрузки корректен (к сожалению, сейчас его нет под рукой), т.к. при его выполнении из одного потока этого приложения вызов метода отлично работает. Это принципиально невожможно для одного приложения загрузить два экземпляра DLL? Что делают в таких случаях?

Спасибо.

Андрей


 
Виктор Щербаков   (2002-03-26 14:01) [3]


> Это принципиально невожможно для одного приложения загрузить
> два экземпляра DLL? Что делают в таких случаях?

Это возможно, но в dll, для поддержки многопоточности нужно использовать синхронизацию доступа к ресурсам. Способов много. Самые распространенные - критические секции и объекты ядра.


 
Andrew_A   (2002-03-26 14:10) [4]

Тогда не совсем понял: зачем поддерживать многопоточность, если каждый поток работает со своим экземпляром DLL? И если возможно загружать разные экземпляры DLL, как это делается (какую функцию использовать?)


 
VuDZ   (2002-03-26 14:18) [5]

каждый поток работает с единым экземпляром dll загруженной в адресное пространство поцесса


 
Digitman   (2002-03-26 15:34) [6]

Экз-р кодового сегмента DLL един для всех процессов и потоков, работающих в контексте каждого из процессов. Экз-ров сегмента данных DLL столько, сколько процессов (именно процессов, а не потоков !) затребовали доступ к DLL.




 
Fellomena   (2002-03-28 17:28) [7]

2 Andrew_A:
перечитай пару раз Digitman © (26.03.02 15:34) и поймёшь, что если два потока в контексте одного процесса затребуют один и тот же ресурс из сегмента данных dll, то вполне возможен AV (и наверняка, если ресурс неразделяемый).
Используй мьютексы или крит. секции.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
14-97398
copyr25
2002-04-19 21:58
2002.05.30
Завтра вся московская милиция будет


3-97199
cdaDmitriy
2002-05-07 17:38
2002.05.30
Проблема с DBGrid ( Прыгает курсор )


7-97430
Ол11
2002-03-05 13:09
2002.05.30
Господа, для кого IEEE1394 не пустой звкк??


3-97147
Aidan
2002-05-07 09:59
2002.05.30
Запрос к нескольким базам данных


14-97394
PaRL
2002-04-20 20:54
2002.05.30
Оно самое.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский