![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по поводу DLL [D7, WinXP]
Pirat1 © (2004-11-22 19:42:00)Мастера, хочу написать dll, которую могут использовать много потоков моей программы!
Имееться вопросик:
Доступ к глобальным переменным программы надо синхронизировать! А вот доступ к ф-циям в Dll надо ли синхронизировать в каждом потоке? и почему да или нет?
Заранее спасибо.
Alexander Panov (2004-11-23 10:56:00) [1]Pirat1 (23.11.04 10:15) [9]
Немного не то, что тебе нужно.
В DLL реализован класс, но используется он через экспортируемые функции - http://home.ural.ru/~panov/projects/threadspool/threadspool.html
Reindeer Moss Eater (2004-11-23 10:26:00) [2]DLL экспортирующая экземпляры классов Delphi - большая бессмыслица.
TUser (2004-11-23 10:23:00) [3]
> Можно ли в DLL "вснунуть" некий класс, с описанием своих
> методов и свойств, для последующего его использования в
> различных приложениях?
Для этого есть интерфейсы
Digitman (2004-11-23 10:23:00) [4]
> Можно ли в DLL "вснунуть" некий класс, с описанием своих
> методов и свойств, для последующего его использования в
> различных приложениях?
можно.
только библиотека эта д.б. оформлена не просто как некая DLL, а именно как BPL (Borland Package Library)
см.
File -> New .. -> Package
Pirat1 (2004-11-23 10:15:00) [5]
> Digitman
Спасибо.
У меня еще вопросик:
Можно ли в DLL "вснунуть" некий класс, с описанием своих методов и свойств, для последующего его использования в различных приложениях?
И если можно то как?
(желательно с примерчиком или ссылочкой)
Digitman (2004-11-23 10:11:00) [6]
> Pirat1
ну примерно так ..
только не "программ", а трэдов
Pirat1 (2004-11-23 09:59:00) [7]
> Digitman ©
Т.е получаеться, что сколько бы нибыло программ, использующих одну DLL - она всегда одна в памяти, а в стеке каждой программы распологаються "временно" локальные переменные ф-ции из DLL момент выполнения ее?
Digitman (2004-11-23 08:14:00) [8]
> Pirat1 (22.11.04 20:42) [2]
> если в моей функции используються внутрение локальные
> переменные, то как?
следует понимать, что память под лок.переменные процедур и ф-ций выделяется в стеке, а каждый трэд имеет свой собственный стек
Pirat1 (2004-11-22 22:08:00) [9]
> Мастер
Понял. Спасибо.
Мастер (2004-11-22 21:48:00) [10]PS.
Лекции внимательнее слушать надо.
Мастер (2004-11-22 21:46:00) [11]Доступ как к глобальным переменным приложения так и глобальным переменным DLL надо синхронизировать.
А вот доступ к функициям из DLL вместе со своими локальными переменными синхронизировать не надо, так же, как и к функциям в своем приложении.
На то переменные и локальные, чтобы для каждого вызова функции использовались своои копии этих переменных.
Pirat1 (2004-11-22 20:42:00) [12]
> Если они у тебя будут работать с неразделяемыми русурсами
А если в моей функции используються внутрение локальные переменные, то как?
Poirot (2004-11-22 19:46:00) [13]Если они у тебя будут работать с неразделяемыми русурсами, то не надо - зы смотри вызов Execute у TThread. А в противном случае смотри свой вопроc пунк 1:)