src/Pure/Concurrent/future.ML
changeset 78705 fde0b195cb7d
parent 78681 38fe769658be
child 78713 a44ac17ae227
equal deleted inserted replaced
78704:b54aee45cabe 78705:fde0b195cb7d
   612 
   612 
   613 fun value x = value_result (Exn.Res x);
   613 fun value x = value_result (Exn.Res x);
   614 
   614 
   615 fun cond_forks args es =
   615 fun cond_forks args es =
   616   if enabled () then forks args es
   616   if enabled () then forks args es
   617   else map (fn e => value_result (Exn.interruptible_capture e ())) es;
   617   else map (fn e => value_result (Exn.result e ())) es;
   618 
   618 
   619 fun map_future f x =
   619 fun map_future f x =
   620   if is_finished x then value_result (Exn.interruptible_capture (f o join) x)
   620   if is_finished x then value_result (Exn.result (f o join) x)
   621   else
   621   else
   622     let
   622     let
   623       val task = task_of x;
   623       val task = task_of x;
   624       val group = Task_Queue.group_of_task task;
   624       val group = Task_Queue.group_of_task task;
   625       val (result, job) =
   625       val (result, job) =