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

Вниз

Вопрос по поводу DLL   Найти похожие ветки 

 
Pirat1   (2004-11-22 19:42) [0]

Мастера, хочу написать dll, которую могут использовать много потоков моей программы!

Имееться вопросик:
Доступ к глобальным переменным программы надо синхронизировать! А вот доступ к ф-циям в Dll надо ли синхронизировать в каждом потоке? и почему да или нет?

Заранее спасибо.


 
Poirot ©   (2004-11-22 19:46) [1]

Если они у тебя будут работать с неразделяемыми русурсами, то не надо - зы смотри вызов Execute у TThread. А в противном случае смотри свой вопроc пунк 1:)


 
Pirat1   (2004-11-22 20:42) [2]


> Если они у тебя будут работать с неразделяемыми русурсами

А если в моей функции используються внутрение локальные переменные, то как?


 
Мастер ©   (2004-11-22 21:46) [3]

Доступ как к глобальным переменным приложения так и глобальным переменным DLL надо синхронизировать.
А вот доступ к функициям из DLL вместе со своими локальными переменными синхронизировать не надо, так же, как и к функциям в своем приложении.
На то переменные и локальные, чтобы для каждого вызова функции использовались своои копии этих переменных.


 
Мастер ©   (2004-11-22 21:48) [4]

PS.
Лекции внимательнее слушать надо.


 
Pirat1   (2004-11-22 22:08) [5]


> Мастер

Понял. Спасибо.


 
Digitman ©   (2004-11-23 08:14) [6]


> Pirat1   (22.11.04 20:42) [2]
> если в моей функции используються внутрение локальные
> переменные, то как?


следует понимать, что память под лок.переменные процедур и ф-ций выделяется в стеке, а каждый трэд имеет свой собственный стек


 
Pirat1   (2004-11-23 09:59) [7]


> Digitman ©

Т.е получаеться, что сколько бы нибыло программ, использующих одну DLL - она всегда одна в памяти, а в стеке каждой программы распологаються "временно" локальные переменные ф-ции из DLL момент выполнения ее?


 
Digitman ©   (2004-11-23 10:11) [8]


> Pirat1


ну примерно так ..

только не "программ", а трэдов


 
Pirat1   (2004-11-23 10:15) [9]


> Digitman

Спасибо.

У меня еще вопросик:
Можно ли в DLL "вснунуть" некий класс, с описанием своих методов и свойств, для последующего его использования в различных приложениях?
И если можно то как?
(желательно с примерчиком или ссылочкой)


 
TUser ©   (2004-11-23 10:23) [10]


> Можно ли в DLL "вснунуть" некий класс, с описанием своих
> методов и свойств, для последующего его использования в
> различных приложениях?

Для этого есть интерфейсы


 
Digitman ©   (2004-11-23 10:23) [11]


> Можно ли в DLL "вснунуть" некий класс, с описанием своих
> методов и свойств, для последующего его использования в
> различных приложениях?


можно.
только библиотека эта д.б. оформлена не просто как некая DLL, а именно как BPL (Borland Package Library)

см.
File -> New .. -> Package


 
Reindeer Moss Eater ©   (2004-11-23 10:26) [12]

DLL экспортирующая экземпляры классов Delphi - большая бессмыслица.


 
Alexander Panov ©   (2004-11-23 10:56) [13]

Pirat1   (23.11.04 10:15) [9]
Немного не то, что тебе нужно.
В DLL реализован класс, но используется он через экспортируемые функции - http://home.ural.ru/~panov/projects/threadspool/threadspool.html



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

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
9-1091462459
Красный молоток
2004-08-02 20:00
2004.12.05
DDraw VSync


8-1094278240
X-Disa
2004-09-04 10:10
2004.12.05
TImgView32 и слои


1-1100803888
self001
2004-11-18 21:51
2004.12.05
file of record


14-1099820385
Piter
2004-11-07 12:39
2004.12.05
Редакторы ресурсов


6-1096199404
Ezhik
2004-09-26 15:50
2004.12.05
Передача переменной по сети





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