Skip to content
Snippets Groups Projects
Commit 3bf231cf authored by erwan's avatar erwan
Browse files

Do not exit in error if the algo is silent

parent a7e2865c
No related branches found
No related tags found
No related merge requests found
(* Time-stamp: <modified the 07/03/2019 (at 15:27) by Erwan> *)
(* Time-stamp: <modified the 07/03/2019 (at 16:23) by Erwan> *)
(* XXX Je pourrais utiliser Lwt pour rendre step non-bloquant, ce qui
permettrait d'accelerer la simu sur les machines qui ont plusieurs
......@@ -72,7 +72,7 @@ let (to_algo_neighbor: Env.t -> Topology.neighbor -> Algo.neighbor) =
n_vars = n.Topology.n_vars
}
exception Silent
exception Silent of int
let rec (simu: int -> int -> Process.t list ->
(Process.t * Topology.neighbor list) list -> Env.t -> unit) =
......@@ -86,7 +86,7 @@ let rec (simu: int -> int -> Process.t list ->
if al <> [] then al::acc else acc)
[] pl_n
in
assert (all <> []);
if (all = []) then raise (Silent i);
let al = Demon.f args.demon all in
(* Do the steps *)
......@@ -106,7 +106,7 @@ let rec (simu: int -> int -> Process.t list ->
Printf.eprintf "step %s: %s (%s)\n" (string_of_int (n-i)) (StringOf.env e pl) al_str;
match all with
(* | [_] -> () *)
| [] -> raise Silent
| [] -> raise (Silent i)
| _ -> if i > 0 then simu n (i-1) pl pl_n ne else ()
let () =
......@@ -139,4 +139,6 @@ let () =
List.iter dump_process pl_n;
let n = SasArg.args.length in
simu n n pl pl_n e
with Dynlink.Error e -> Printf.printf "E: %s\n"(Dynlink.error_message e)
with
| Dynlink.Error e -> Printf.printf "E: %s\n"(Dynlink.error_message e)
| Silent i -> Printf.printf "This algo is silent after %i steps\n" i
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment