diff options
Diffstat (limited to 'src/kahn_seq.ml')
-rw-r--r-- | src/kahn_seq.ml | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/kahn_seq.ml b/src/kahn_seq.ml index 8aff905..c699bbd 100644 --- a/src/kahn_seq.ml +++ b/src/kahn_seq.ml @@ -53,8 +53,14 @@ module Seq: S = struct let doco l = fun cont -> - List.iter (fun proc -> Queue.push (fun () -> proc (fun () -> ())) tasks) l; - cont () + let remain = ref (List.length l) in + List.iter (fun proc -> Queue.push (fun () -> proc (fun () -> remain := !remain - 1)) tasks) l; + let rec wait_x () = + if !remain = 0 then + cont () + else + Queue.push wait_x tasks + in wait_x () let return v = fun cont -> cont v |