> On 25 Sep 2016, at 22:49, Martin Buchholz <marti...@google.com> wrote:
> ...Say you are implementing some existing function with a traditional 
> synchronous API.  Your implementation is multi-threaded, but that's an 
> implementation detail.  Before you return to the caller, you must wait for 
> the various parts of your computation to complete (the "join" part of 
> fork/join).  It seems reasonable to wait forever.  If some part of your 
> computation is interacting with an unreliable external resource, then it 
> makes sense for that particular "wait" (which need not occupy a thread) to 
> have a timeout.  Test methods, main methods and unix process reapers are all 
> examples where it's reasonable to block forever.

More than that, cancelling the wait does not cancel the computation it was 
waiting for.

You need to time out / cancel the wait at the junctions where you have the 
power to arbitrate fair use of resource locked up in the caller, by the caller.

Alex

Reply via email to