OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: Richard Blewett (richard.blewettVIRGIN.NET)
Date: Tue Oct 02 2001 - 04:21:54 CDT

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    OK, now I see where your assumtion came from - that is what happens in MTS
    as MTS components all run in the STA thread pool.

    Your numbers "in-call" for COM+ may well be smaller as each call gets
    serviced faster. Assuming we are taling about a server app you have 2 thread
    switches for MTA to MTA, 6 for STA to STA and 4 for STA to MTA. So there is
    less work for a start. You also lose the MTS context wrapper as this is
    handled in the standard marshalling channel in COM+, so you have less layers
    to go through. Finally, for a properly configured server, Win2K is simply
    faster than NT.

    Are you seeing a performance degradation when you switch to COM+ or simply a
    lower number of in-call requests in progress.

    To answer to your other questions, there is no limit on the MTA thread pool.
    If no thread is available to service a call a new thread is spawned.

    You can check out which apartment you are in by using CoInitializeEx:

    CoInitEx(NULL, MULTITHREADED); returns S_OK if no apartment, S_FALSE if MTA
    and and RPC_E_CHANGED_MODE if TNA or STA.

    CoInitEx(NULL, APARTMENT); returns S_OK if no apartment, S_FALSE if STA and
    and error if TNA or MTA.

    just remember to balance the success calls (S_OK and S_FALSE) with
    CoUninitialize();

    Richard
    http://staff.develop.com/richardb

    -----Original Message-----
    From: Distributed COM-Based Code [mailto:DCOMDISCUSS.MICROSOFT.COM]On
    Behalf Of Charles Gamble
    Sent: 02 October 2001 09:33
    To: DCOMDISCUSS.MICROSOFT.COM
    Subject: Re: COM+ and free threading

    Thanks for the help Richard,

    I am running tests where there is a lot of operations happening concurrently
    on MTS/COM+ components. I have about 64 concurrent threads calling many
    components. All the components are set as ThreadingModel "Both". In MTS on
    NT, when I look at the no of "In Call" for all my components in total, it
    will jump to 60 - 70 and back down again quite often.

    However, when I run the same test in COM+, the "In Call" total will stay
    below 10. Very rarely, the total in call will jump up to between 20 - 50,
    but this may not be an accurate stat and only happened once or twice in a
    hour long test.
    This makes me think that the maximum number of threads is being reached in
    COM+.
    If a component uses an MTA, is it still restricted to the number of
    concurrent threads that can run?

    Also, is there some way to see which apartment you are running in?

    Thanks a lot,
                    Charles.

    -----Original Message-----
    From: Richard Blewett [mailto:richard.blewettVIRGIN.NET]
    Sent: 01 October 2001 18:05
    To: DCOMDISCUSS.MICROSOFT.COM
    Subject: Re: COM+ and free threading

    Sorry - your assumtions are not correct.

    TM=Both for a library app means that the objects enter the apartment of
    their creator. For a Server app they enter the MTA.

    TM=Free will force the object to always enter the MTA whether library or
    server.

    In the MTA you have to provide all synchronization yourself - unless you
    turn on COM+ synchronization - in which case only one causality (logical
    call chain) will access the object at any one time. You will still need to
    protect shared state like statics and globals.

    Richard
    http://staff.develop.com/richardb

    -----Original Message-----
    From: Distributed COM-Based Code [mailto:DCOMDISCUSS.MICROSOFT.COM]On
    Behalf Of Charles Gamble
    Sent: 01 October 2001 17:04
    To: DCOMDISCUSS.MICROSOFT.COM
    Subject: COM+ and free threading

    Hi all,

    I realise that when you setup a COM+ component to be threading model "Both",
    it uses the STA thread pool provided by COM+ which is restricted to use 8 -
    10 concurrent threads on a single CPU thread. My question is, if I have a
    component setup to be threading model "Free", will this use the STA
    threadpool? If not, will it be restricted in the number of concurrent
    threads that can access it?
    Also, will the component have to be thread safe, protect instance data,
    etc.? Or will this be provided by COM+?

    Any help is appreciated.
            Charles Gamble.

    ----------------------------------------------------------------
    Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
    contains important info. Save time, search the archives at
    http://discuss.microsoft.com/archives/index.html .
    To unsubscribe, mailto:DCOM-signoff-requestDISCUSS.MICROSOFT.COM

    ----------------------------------------------------------------
    Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
    contains important info. Save time, search the archives at
    http://discuss.microsoft.com/archives/index.html .
    To unsubscribe, mailto:DCOM-signoff-requestDISCUSS.MICROSOFT.COM

    ----------------------------------------------------------------
    Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
    contains important info. Save time, search the archives at
    http://discuss.microsoft.com/archives/index.html .
    To unsubscribe, mailto:DCOM-signoff-requestDISCUSS.MICROSOFT.COM

    ----------------------------------------------------------------
    Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
    contains important info. Save time, search the archives at
    http://discuss.microsoft.com/archives/index.html .
    To unsubscribe, mailto:DCOM-signoff-requestDISCUSS.MICROSOFT.COM