Suspending a method execution

Kaisheng Du kxd1483@tts.dowjones.com
Wed, 04 Mar 1998 14:26:58 -0500


Gary D. Duzan wrote:

> In Message <34F70B6E.9B3@c-lab.de> ,
>    Jan Lessner <jan@c-lab.de> wrote:
>
> =>Hello all
> =>A while ago I learned that omniORB creates a separate thread for
> every
> =>single implementation object for its request dispatching.
>
>    The basis for your question is flawed. This is not, in fact, the
> threading model used in OmniORB. Rather, it uses a thread-per-client-
> connection model. There can be from zero to an arbitrarily large
> number
> of threads associated with an implementation object at any given time,
>
> depending on the number of clients operating on it. For details see
> the
> documentation with OmniORB 2.4.0, the chapter on Connection
> Management,
> and the section entitled The Model.
>
>                                         Gary Duzan
>                                         GTE Laboratories



I've read the corresponding chapter many times, but I can't find out
where it points
out that the Dispatching model it is using is thread-per-client.
The following is all I think revelent  from the user guide ( did I miss
anything)




 "With this design, there is at most one call in-flight at any time in a
connection. If there is only one connection,
concurrent invocations to the same remote address space would have to be
serialised. To eliminate this limitation,
omniORB2 implements a dynamic policy- multiple connections to the same
remote
address space are created on demand and cached when there are concurrent
invocations in progress. "

"To be more precise, a network connection to another address space is
only established when a remote
invocation is about to be made. Therefore, there may be one or more
object references in one address
space that refers to objects in a different address space but unless the
application invokes on these objects,
no network connection is made. "


It only says that a new connection will be set up if concurrent calls
are made to the server.  It didn't imply that
the server will look up who is calling and give the caller the thread
belonging to him, if it exists. It seems me that
if the same client tries to make two calls back to back, OmniORB  may
create two different connections to the server.

Thanks for your help!

Kaisheng Du