Articles   Members Online:
-Article/Tip Search
-News Group Search over 21 Million news group articles.
Member Area
-Account Center
-Top 10 NEW!!
-Submit Article/Tip
-Forums Upgraded!!
-My Articles
-Edit Information
-Become a Member
-Why sign up!
-Chat Online!
-Indexes NEW!!
-Build your resume
-Find a job
-Post a job
-Resume Search
-Link to us
Visit Embarcadero
Embarcadero Community
Description of Instancing and Threading Models in COM-servers Turn on/off line numbers in source code. Switch to Orginial background IDE or DSP color Comment or reply to this aritlce/tip for discussion. Bookmark this article to my favorite article(s). Print this article
Delphi 2.x
User Rating
No Votes
# Votes
DSP, Administrator
Reference URL:
			Author: Mike Shkolnik

How to select a correct value of Unstancing/Threading Model when I develop the Com 


When you create a new COM object, you must define the Instancing and Threading 
Model, which will be used in your COM object. For example, when you use the 
Automation Object Wizard (select File|New from main menu, click the ActiveX tab and 
select Automation Object Wizard item) you must select a desired values of 
Instancing/Threading Model from comboboxes. 

In this article I'll include a short description for each value. 

1. Instancing refers to how many instances of the COM object are created for a 
request of client. You can select a one option from three available items: Single 
Instance, Multiple Instance and Internal. 

a) Single Instance - allows only a single COM interface for each executable. So 
creating multiple single instances results in creating multiple copies of the 
server application. This option is commonly used for multiple document interface 
(MDI) applications. 

b) Multiple Instance - specifies that multiple applications can connect to the 
object. Any time a client requests service, a separete instance of the server gets 
invoked. That is, there can be multiple instances in a single executable. For 
example, any time a user attempts to open the Windows Explorer, a separate Explorer 
is created 

c) Internal - means the object can only be created internally. An external 
application cannot create an instance of the object directly. For example, a word 
processor application may have an internal document object that can only be created 
by calling a method of the application that will create the document object. 

2. The Threading Model refers to how your object is advertised to the client 
applications via its thread support. You can select one from the next options: 
Single, Apartment, Free or Both. 

a) Single - no thread support. Client requests are serialized by the standard 
calling mechanism. serialized by the calling mechanism. With this threading model 
the clients are handled one at a time so no threading support is needed. 

b) Apartment - different objects from the same server can be called on different 
threads or different clients, but each object is called only from that one thread. 
If two clients need to use the same object, they have to take turns. With this 
threading model the instance data is safe, global data must be protected using 
critical sections or some other form of serialization. Of course, the thread's 
local variables are reliable across multiple calls. 

c) Free - clients can call any method of object from any thread at any time. 
Objects can handle any number of threads at any time. That is, more than one client 
can share the same object. Objects must protect all instance and global data using 
critical sections or some other form of serialization. Thread local variables are 
not reliable across multiple calls. Primarily used for distributed DCOM 

d) Both - objects can support clients that use either Aprtment or Free threading 
models. This threading model give a maximum performance and flexibility. 

So a correct value selection of Instancing and Threading Model can affect on performance of your COM object and depends from task which you want realize in this object. 

Vote: How useful do you find this Article/Tip?
Bad Excellent
1 2 3 4 5 6 7 8 9 10


Share this page
Download from Google

Copyright © Mendozi Enterprises LLC