call-with-timeout
LANDAU_CHARLES@Tandem.COM
LANDAU_CHARLES@Tandem.COM
22 Dec 94 10:25:00 -0800
>in KeyKOS; the obvious method that
occurs to me is to create an intermediate process to make the call
and terminate the process if the call times out.
Yes. And as Bill said, it is possible to extricate the intermediate
process from the call without destroying it. So what has been done in
KeyKOS is to keep the intermediate process (domain) around and use it
when necessary for this purpose. We rarely used timeouts, but this was
used in the debugger to give up when the user at the terminal says he is
tired of waiting. It's really quite easy; in fact I think we may have
had a standard object that could be used to do this.
Another way is to use a start key instead of a resume key. Instead of
CALLing the slow server, you RETURN to it passing a start key to
yourself as the last key (where the resume key normally goes). You
previously gave the start key also to the process that is timing out.
Whichever invokes the key first restarts you. This method introduces no
extra key jumps, but has some disadvantages. Your domain must not
already have passed out other start keys for other reasons, or they
could start you when you don't want a new request. And some servers
(generally, prompt ones) won't return to anything but a resume key
(because other keys could stall).