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

Вниз

Вопрос по поводу 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.072 c
14-1100487683
Думкин
2004-11-15 06:01
2004.12.05
С днем рождения! 15 ноября


14-1099793434
Думкин
2004-11-07 05:10
2004.12.05
С днем рождения! 7 ноября


3-1099685535
Hmm
2004-11-05 23:12
2004.12.05
связь таблиц. "combobox в dbgride"


11-1083082807
Delphi5.01
2004-04-27 20:20
2004.12.05
Что является аналогом inhereted в KOL?


8-1094066393
Mihey_temporary
2004-09-01 23:19
2004.12.05
Нужна информация по сглаживанию линий