sig
type 'a or_error = ('a, exn) CCResult.t
module MVar :
sig
type 'a t
val make : 'a -> 'a Scheduling.MVar.t
val get : 'a Scheduling.MVar.t -> 'a
val set : 'a Scheduling.MVar.t -> 'a -> unit
val update : f:('a -> 'a * 'b) -> 'a Scheduling.MVar.t -> 'b
end
module Fut :
sig
type 'a t
val return : 'a -> 'a Scheduling.Fut.t
val map : ('a -> 'b) -> 'a Scheduling.Fut.t -> 'b Scheduling.Fut.t
type 'a final_state = Stopped | Done of 'a | Fail of exn
type tasks_bag
type 'a on_res_callback =
Scheduling.Fut.tasks_bag -> 'a Scheduling.Fut.final_state -> unit
val make :
?on_res:'a Scheduling.Fut.on_res_callback list ->
(unit -> 'a) -> 'a Scheduling.Fut.t
val stop : 'a Scheduling.Fut.t -> unit
val is_done : 'a Scheduling.Fut.t -> bool
val on_res :
'a Scheduling.Fut.t -> f:'a Scheduling.Fut.on_res_callback -> unit
val get : 'a Scheduling.Fut.t -> 'a Scheduling.Fut.final_state
end
type process_status = int
val popen :
?on_res:('a * Scheduling.process_status) Scheduling.or_error
Scheduling.Fut.on_res_callback list ->
string ->
f:(Pervasives.out_channel * Pervasives.in_channel -> 'a) ->
('a * Scheduling.process_status) Scheduling.or_error Scheduling.Fut.t
type shortcut = Shortcut | No_shortcut
module Task :
sig
type 'res t
val make :
?prio:int ->
?slice:float ->
(deadline:float -> unit -> 'a * Scheduling.shortcut) ->
'a Scheduling.Task.t
val of_fut :
?prio:int ->
?slice:float ->
(deadline:float ->
unit -> ('a * Scheduling.shortcut) Scheduling.Fut.t) ->
'a Scheduling.Task.t
val map : f:('a -> 'b) -> 'a Scheduling.Task.t -> 'b Scheduling.Task.t
end
type 'a run_result = Res_one of 'a | Res_list of 'a list | Res_fail of exn
val run :
j:int ->
deadline:float ->
'res Scheduling.Task.t list -> 'res Scheduling.run_result
end