From c4dbcb7e4658760109babd42c14dd8b36e4c2373 Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Fri, 23 Nov 2012 20:08:26 +0100 Subject: [PATCH] Better organization and handling for Ctrl^C --- .../scala/leon/synthesis/ParallelSearch.scala | 2 +- .../search/AndOrGraphParallelSearch.scala | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/scala/leon/synthesis/ParallelSearch.scala b/src/main/scala/leon/synthesis/ParallelSearch.scala index cbf374f7e..cd8f11d33 100644 --- a/src/main/scala/leon/synthesis/ParallelSearch.scala +++ b/src/main/scala/leon/synthesis/ParallelSearch.scala @@ -14,7 +14,7 @@ class ParallelSearch(synth: Synthesizer, def initWorkerContext(wr: ActorRef) = { val reporter = new SilentReporter - val solver = new FairZ3Solver(synth.reporter) + val solver = new FairZ3Solver(reporter) solver.setProgram(synth.program) SynthesisContext(solver = solver, reporter = synth.reporter) diff --git a/src/main/scala/leon/synthesis/search/AndOrGraphParallelSearch.scala b/src/main/scala/leon/synthesis/search/AndOrGraphParallelSearch.scala index 6e677c687..be7ee3498 100644 --- a/src/main/scala/leon/synthesis/search/AndOrGraphParallelSearch.scala +++ b/src/main/scala/leon/synthesis/search/AndOrGraphParallelSearch.scala @@ -13,20 +13,26 @@ abstract class AndOrGraphParallelSearch[WC, def initWorkerContext(w: ActorRef): WC - val system = ActorSystem("ParallelSearch") + val nWorkers = 5 + val timeout = 600.seconds - val master = system.actorOf(Props(new Master), name = "Master") + var system: ActorSystem = _ def search(): Option[S] = { + system = ActorSystem("ParallelSearch") - val workers = for (i <- 0 to 5) yield { + val master = system.actorOf(Props(new Master), name = "Master") + + val workers = for (i <- 1 to nWorkers) yield { system.actorOf(Props(new Worker(master)), name = "Worker"+i) } - val timeout = 600.seconds Await.result(master.ask(Protocol.BeginSearch)(timeout), timeout) - system.shutdown + if (system ne null) { + system.shutdown + system = null + } g.tree.solution } @@ -34,6 +40,10 @@ abstract class AndOrGraphParallelSearch[WC, override def stop() { super.stop() + if(system ne null) { + system.shutdown + system = null + } } -- GitLab