diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-05-25 23:26:38 +0200 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-05-25 23:26:38 +0200 |
commit | 4d3f12f167729ecb5de5b9bf8e18f9eca52beced (patch) | |
tree | c03ca045d64ea87e7886032dd5dc215df4ab747d /src/kahn_seq.ml | |
parent | aefaa158e36cd65afa98d6b7c3f0a3d0717e13a4 (diff) | |
download | SystemeReseaux-Projet-4d3f12f167729ecb5de5b9bf8e18f9eca52beced.tar.gz SystemeReseaux-Projet-4d3f12f167729ecb5de5b9bf8e18f9eca52beced.zip |
Add README, clean up a little.
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 |