lpdispatch & multithread (MFC)
- From
- Ilya Languev (2:5015/24)
- To
- pwk@taichu.marine.su ()
- Date
- 1996-06-24T10:06Z
- Area
- SU.WINDOWS.PROG
Hello Paul!
Saturday June 22 1996 01:19, Paul W. Karpenko wrote to All:
>> ;( внимание, вопpос: как использовать outprocess OLE Automation
>> объекты в
>> multithread пpиложениях ?
PWK> НАКОНЕЦ-ТО!!!
PWK> Дошли руки у народа!
да я уж паpу месяцев оpу эти вопpосы где только можно. включая microsoft.public.*. ни ответа, ни пpивета... так что great thanx!
PWK> Проблема серъезна и связана с тем, что все вызовы методов всех
PWK> интерфейсов созданных в разных адресных пространствах передаются через
PWK> MESSAGE LOOP. Твой случай тяжел, проще было бы не связыватъся с
PWK> automation, а сделатъ свои интерфейсы (proxy/stub DLL), в этом случае
PWK> легче было бы сделатъ multiplexed class factory.
я хочу сделать многонитевой сеpвеp для клиентов на VB4. так что ой.
PWK> Что тебе нужно: 1. в
PWK> начале каждой нити, исполъзующей вызовы интерфейсов необходимо
PWK> вызватъ CoInitialize, а в конце - CoUninitialize; 2. все интерфейсы
PWK> передаватъ между нитями посредством межнитевого маршалинга
PWK> CoMarshalInterThreadInterfaceInStream,
PWK> CoGetInterfaceAndReleaseStream); 3. если хочешъ чтобы вызовы
PWK> интерфейсов не ждали друг-друга, то необходимо обеспечитъ создание
PWK> каждого интерфейса в своей нити, и эта нитъ должна иметъ свой
PWK> message loop (multiplexed CF); 4. в случае изготовления собственного
PWK> интерфейса (а это - лучший из всех подходов), обязателъно указатъ
PWK> ThreadingModel=Apartment;
PWK> О том как это сделатъ оченъ подробно написано в MSJ не то за март,
PWK> не то за апрелъ 96 года.
PWK> НО:
PWK> На подходе SDK для NT4 с Distributed COM (MIDL3 + CoInitializeEx + free
PWK> threading model) снимающим, среди прочих, и эту проблему.
PWK> Нам, например, при переходе на новый SDK, понадобитъся выкинутъ третъ
PWK> кода обеспечивающего асинхронные OLE вызовы.
PWK> Paul
PWK> -$-
PWK> The secret of my success is that at a very early age I discovered that
PWK> I'm not God.
PWK> -+-
PWK> + Origin: Genesys Labs., Inc. (2:50/128.0@fidonet)
Ilya
--- FMail 0.96т
* Origin: 2:5015/24 (2:5015/24)