[omniORB] more Questions about oneway and asynchronous messages...

Bruce Visscher visschb@rjrt.com
Wed, 07 Jul 1999 13:53:59 -0400



Charles W Collins wrote:

> Thanks for the responses I got, but I still have some questions about it...
>

They weren't posted here, so I may be repeating some of the suggestions and
comments.

>
> Unfortunately, I can't just spawn extra threads for handling those
> communications and let them time out because we expect that ultimately
> it may be a very large number of connections that are just open for one
> or two messages.  We do not want the overhead of constantly spawning and
> cleaning up those threads.
>

OTOH, unless you try this, you don't know that it's worse performance.
Spawning a thread should be low overhead.  We have found that changing one-way
calls to non-one way does not effect performance (in our applications) as much
as might be expected.

There was a thread about this in this list that I found enlightening.  Did you
read it?  In particular, did you try disabling the scavengers?

What platforms are you using?

>
> I have been told that the problems I've encountered with the oneway
> calls (namely that it will block if the server is down and more than
> about 100 messages are sent to it) are due to the underlying TCP.  I've
> heard of non-blocking TCP where you can make your socket not block and
> not really care whether the message gets there, but I don't know very
> much about it.  Is anyway that I could change the transport mechanism of
> OmniORB to fit my needs or will I have to write a full set of transport
> and marshalling calls myself and not use the ORB?
>

Yes, you could replace the TCP socket calls with asynchronous calls, but IMHO,
that would be messy and a lot of work.  If your platform has decent thread
support it shouldn't be necessary.

Bruce