Re: COM und ThreadingModel
- From: "Alfred Schlechter" <nospam@xxxxxxxxxxxx>
- Date: Thu, 6 Oct 2005 11:12:58 +0200
Hallo Jochen.
Danke, das war ausführlich und ich denke, ich habs geschnallt.
Verwirrend war eben, daß dieser (ohnehin komische) Borland-C++-Builder 6
wohl beim Registrieren der Out-Proc-Komponente auch das ThreadingModel in
der
Reg selbstständig und überflüssigerweise setzt.
Danke auch an alle anderen, die geantwortet haben.
MfG
Alfred Schlechter
"Jochen Kalmbach [MVP]" <nospam-Jochen.Kalmbach@xxxxxxxxx> schrieb im
Newsbeitrag news:O2MpIPlyFHA.3172@xxxxxxxxxxxxxxxxxxxxxxx
> Hallo Alfred!
>
> >>Das ist ein Registry-Eintrag wie jeder andere. Brauchst Du
> >>grundsätzliche Informationen, wie man auf die Registry zugreift?
> >
> > Nein, ich wollte wissen wie der Eintrag in der Reg "ThreadingModel =
> > Apartment" zustande kommt.
> > Wer setzt ihn, CoInitialize ?
> >
> > Ich kenne zwei Aufrufparameter für CoInitializeEx:
> > COINIT_APARTMENTTHREADED und COINIT_MULTITHREADED
> > Ich dachte immer, ich kann über diese Parameter das ThreadingModel
bezüglich
> > eines Threads festlegen.
> > CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) -> ThreadingModel =
Apartment
> > ?
> > CoInitializeEx(NULL, COINIT_MULTITHREADED) -> ThreadingModel = ?
>
> Das hat aber mit der Registry gar nichts zu tun...
> Das CoInitialize(Ex) betrifft nur Deinen Thread...
>
>
> > Nun steht in der MSDN (Selecting a Threading Model), daß es vier
> > Threading-Modelle gibt:
> > Single (not recommended),
> > Apartment (recommended),
> > Free(not recommended),
> > Both(recommended)
> >
> > Ergo: 2 Aufrufparameter, aber 4 Threading-Modelle !
> > Oder gibt es da keinen Zusammenhang ?
>
> Hier gibt es nur bedingt einen Zusammenhang.
> Prinzipiell gibt es zwei Grundsätzliche Dinge zu unterscheiden:
>
> 1. Das Threading-Model eines Threads
> Hier gibt es zwei Möglichkeiten:
> - Apartment-Threaded (auch Single-Threaded genannt)
> - Multi-Threaded (auch Free-Threaded genannt)
>
> 2. Das Threading-Model eine InProc-Servers (in der Registry eingetragen)
> Hier gibt es dann die Unterscheidung:
> - Apartment
> d.h. dieser InProc-Server kann nur das STA-Model und muss, wenn es
> in einer MTA-Umgebung verwendet wird, entsprechend gemarshallt werden
> - Free
> d.h. dieser InProc-Server kann nur in einer MTA-Umgebung laufen
> und muss deshalb, wenn er in einer STA-Umgebung verwendet wird,
> entsprechend gemarshallt werden
> - Single
> d.h. es darf nur in seinem eigenen Thread laufen und muss sowohl
> für STA als auch für MTA gemarshallt werden
> - Both
> d.h. der InProc-Server kann sowohl in einem STA als auch in einem
> MTA laufen ohne das zusätzlich was getan werden muss
>
>
>
> Dann gibt es noch den Out-Proc-Server. Hier spielt aber das
> COM-Threading-Model keine Rolle, da es nur für den Prozess intern
> verwendet wird und über Prozessgrenzen hinweg eh gemarshallt werden muss.
> Prinzipiell kann das OS nur MTA und führt dann bei den einzelnen Threads
> die ein anderes als MTA haben, das marshalling/synchronisierung
> entsprechend durch.
>
>
>
> --
> Greetings
> Jochen
>
> My blog about Win32 and .NET
> http://blog.kalmbachnet.de/
.
- References:
- COM und ThreadingModel
- From: Alfred Schlechter
- Re: COM und ThreadingModel
- From: Jochen Kalmbach [MVP]
- Re: COM und ThreadingModel
- From: Jochen Kalmbach [MVP]
- Re: COM und ThreadingModel
- From: Alfred Schlechter
- Re: COM und ThreadingModel
- From: Eberhard Schefold
- Re: COM und ThreadingModel
- From: Alfred Schlechter
- Re: COM und ThreadingModel
- From: Jochen Kalmbach [MVP]
- COM und ThreadingModel
- Prev by Date: Re: CFile try/catch
- Next by Date: Re: Fehler Zugriff / Windows Server 2003 SP1
- Previous by thread: Re: COM und ThreadingModel
- Next by thread: Re: COM und ThreadingModel
- Index(es):
Relevant Pages
|