src/Pure/Concurrent/future.ML
changeset 42128 eb84d28961a9
parent 41776 3bd83302a3c3
child 43538 de5c79682b56
equal deleted inserted replaced
42127:8223e7f4b0da 42128:eb84d28961a9
    47   val join_results: 'a future list -> 'a Exn.result list
    47   val join_results: 'a future list -> 'a Exn.result list
    48   val join_result: 'a future -> 'a Exn.result
    48   val join_result: 'a future -> 'a Exn.result
    49   val join: 'a future -> 'a
    49   val join: 'a future -> 'a
    50   val value: 'a -> 'a future
    50   val value: 'a -> 'a future
    51   val map: ('a -> 'b) -> 'a future -> 'b future
    51   val map: ('a -> 'b) -> 'a future -> 'b future
       
    52   val cond_forks:
       
    53     {name: string, group: Task_Queue.group option, deps: Task_Queue.task list, pri: int} ->
       
    54       (unit -> 'a) list -> 'a future list
    52   val promise_group: Task_Queue.group -> 'a future
    55   val promise_group: Task_Queue.group -> 'a future
    53   val promise: unit -> 'a future
    56   val promise: unit -> 'a future
    54   val fulfill_result: 'a future -> 'a Exn.result -> unit
    57   val fulfill_result: 'a future -> 'a Exn.result -> unit
    55   val fulfill: 'a future -> 'a -> unit
    58   val fulfill: 'a future -> 'a -> unit
    56   val interruptible_task: ('a -> 'b) -> 'a -> 'b
    59   val interruptible_task: ('a -> 'b) -> 'a -> 'b
   498         (forks {name = "Future.map", group = SOME group,
   501         (forks {name = "Future.map", group = SOME group,
   499           deps = [task], pri = Task_Queue.pri_of_task task})
   502           deps = [task], pri = Task_Queue.pri_of_task task})
   500         (fn () => f (join x))
   503         (fn () => f (join x))
   501   end;
   504   end;
   502 
   505 
       
   506 fun cond_forks args es =
       
   507   if Multithreading.enabled () then forks args es
       
   508   else map (fn e => value (e ())) es;
       
   509 
   503 
   510 
   504 (* promised futures -- fulfilled by external means *)
   511 (* promised futures -- fulfilled by external means *)
   505 
   512 
   506 fun promise_group group : 'a future =
   513 fun promise_group group : 'a future =
   507   let
   514   let