summaryrefslogtreecommitdiff
path: root/src/kahn_seq.ml
diff options
context:
space:
mode:
authorAlex AUVOLAT <alex.auvolat@ens.fr>2014-05-25 23:26:38 +0200
committerAlex AUVOLAT <alex.auvolat@ens.fr>2014-05-25 23:26:38 +0200
commit4d3f12f167729ecb5de5b9bf8e18f9eca52beced (patch)
treec03ca045d64ea87e7886032dd5dc215df4ab747d /src/kahn_seq.ml
parentaefaa158e36cd65afa98d6b7c3f0a3d0717e13a4 (diff)
downloadSystemeReseaux-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.ml10
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