![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
потоки в Dll [D6, Win2k]
Palladin © (2003-01-07 22:16:00)Имеет ли смысл Synchronize для создания потока в динамической dll? или поток вообще в dll рекомедуется?
Digitman (2003-01-08 16:08:00) [1]Если конструктор объекта TThread.Create(..) вызывается впервые (абсолютно неважно где, в каком модуле приложения и в какой секции его кода) и вызов этот происходит не в осн.код.потоке процесса, то по кр.мере в Д5 метод Synchronize() без спец.принимаемых мер работать ожидаемым образом не будет
Palladin (2003-01-08 15:46:00) [2]по поводу "из разных опер"
по моей идее поток должен инициализироватся и запустится сразу после загрузки dll причем не по вызову из главной проги а на Initialization
и соответственно освободится в ExitProc dll
вот меня и интересовало при таком типе создания этот поток будет иметь родительский (главный) поток с которым будет synchronize или нет?
а можно про критические секции поподробней?
Слесарь Матерящийся (2003-01-08 11:48:00) [3]>Имеет ли смысл Synchronize для создания потока в динамической >dll? или поток вообще в dll [не] рекомедуется?
Для синхронизации доступа к общим данным для двух (трёх и т.д. ) потоков лучше использовать критичские секции.
Verg (2003-01-08 11:16:00) [4]Synchronize, по-моему, применяется дли синхронихации текущего потока с главным (или с тем, который создал текущий), т.е. процедура указанная в параметре Sync. будет выполнена главным потоком (т.е. в его контексте) в тот момент, когда главный поток обратиться к своей очереди сообщений. Игра идет на особенности вызова sendmessage, когда в параметре HWND указывается хендл окна созданного в контексте другого потока.
Никакого контекста dll я здесь не вижу. Это как бы "из разных опер".
Владимир (2003-01-08 00:05:00) [5]Synchronize применяется для временной замены главного потока приложения, в случаях когда синхронизируемый поток обращается к общим ресурсам или VCL.