[omniORB] Canceling a blocking function
St. John, Adrian
adrian@ipo.att.com
Mon, 3 Apr 2000 04:34:04 -0700
> server[i]-> do_function(argument) // blocked (no reply yet)
>
> How can we unblock this? We don't want to wait more than
> 10sec for these
> functions to timeout because since the overall function is
> deemed completed,
> there will be another request soon and this would cause a
> very large number
> threads to exist in the system at any given point. We dont
> want to lower the
> timeout to anything to less than 10sec because this would
> cause an early
> abort in some cases.
One (messy, but standard) way of doing this is with the DII, using
a non-blocking invocation, and poll for results after sleeping in
each thread for 10 seconds.
I don't know enough about OmniORB to comment on how to do this any
other way, but from my experiance of using other products, there
is normally a way to 'hack' the output of the IDL compiler to do
something similar (perform a non-blocking write-method operation,
sleep a while, and check for a response).
Adrian St. John
AT&T Labs, Redditch.