Re: How does COM pick a thread to create object in?
This is not directly supported by ATL. It has a model whereby
it assigns objects to a pool of STA threads, but it lacks VB6's
STA per object model. I might add with good reason since this
doesn't scale well...
The apartment that register the class object is the apartment that
receives the object instantiation call (IClassFactory::CreateInstance).
In the case of STA this normally means a single-threaded server
since all STA objects end up in the same main thread that registered
all class objects during startup. ATL's auto-thread class factory
delegates the object creation to a thread in a pool of STA threads
and then marshals that object back before returning to the caller,
thus the object ends up in a different STA. You can write your
own class factory object that creates a new thread before doing
the same steps as ATL's auto-thread factory, but on the newly
created STA thread.
Microsoft MVP [VC], MCSD
MVP VC FAQ: http://vcfaq.mvps.org
"Scott McPhillips [MVP]" <org-dot-mvps-at-scottmcp> wrote in message
I would like to create a bunch of identical objects in my server from my
client, with each one in a thread of its own. Using STA, obviously COM
picks a thread somehow, but what determines which thread it picks?
Scott McPhillips [VC++ MVP]