Saturday, November 13, 2010

Difference Between STA and MTA

Single Threaded Apartment :- There may be multiple apartment.But only single thread can be executed in a apartment. If there is a need to communicate between threads you need a proxy, they can not do it directly. The application defines when and for how long the thread in each apartment should execute. All requests are serialized through a window message queue such that only one thread can execute at a time. In Vb we have STA only but in ,Net we have both.

Multiple Threaded Apartment :- In multiple threaded apartment only one apartment will be there and all threads will execute within that single apartment. So that they communicate directly to each other without a proxy.

2 comments:

Vikas Naharia said...

In single threaded apartment (STA) each thread is isolated
in a separate apartment underneath the process. The process
can have any number of apartments that share data through a
proxy. The application defines when and for how long the
thread in each apartment should execute. All requests are
serialized through the Windows message queue such that only
a single apartment is accessed at a time and thus only a
single thread will be executing at any one time. STA is the
threading model that most Visual Basic developers are
familiar with because this is the threading model available
to VB applications prior to VB.NET. You can think of it
like an apartment building full of a row of one room
apartments that are accessible one at a time through a
single hallway. The advantage this provides over single
threaded is that multiple commands can be issued at one
time instead of just a single command, but the commands are
still sequentially executed.


The free threaded/Multi Threaded Apartment (MTA) model has
a single apartment created underneath the process rather
than multiple apartments. This single apartment holds
multiple threads rather than just a single thread. No
message queue is required because all of the threads are a
part of the same apartment and can share data without a
proxy. You can think of it like a building with multiple
rooms that are all accessible once you are inside the
building. These applications typically execute faster than
single threaded and STA because there is less system
overhead and can be optimized to eliminate system idle
time.

Khaleek said...

Thanks Vikas

Followers

Link