From d9fbc75b17778459ebebc071396f918f4fe969dc Mon Sep 17 00:00:00 2001 From: Christian Wulf <chw@informatik.uni-kiel.de> Date: Thu, 30 Jul 2015 18:12:14 +0200 Subject: [PATCH] prepared DynamicActuator --- .../java/teetime/framework/DynamicActuator.java | 13 +++++++++++-- .../util/framework/concurrent/SignalingCounter.java | 5 +++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/teetime/framework/DynamicActuator.java b/src/main/java/teetime/framework/DynamicActuator.java index 2cb2423c..ee63f6d6 100644 --- a/src/main/java/teetime/framework/DynamicActuator.java +++ b/src/main/java/teetime/framework/DynamicActuator.java @@ -15,6 +15,7 @@ */ package teetime.framework; +import teetime.util.framework.concurrent.SignalingCounter; public class DynamicActuator { @@ -30,10 +31,14 @@ public class DynamicActuator { } public Runnable startWithinNewThread(final Stage previousStage, final Stage stage) { - // SignalingCounter runtimeCounter = previousStage.owningContext.getThreadService().getRunnableCounter(); - // SignalingCounter newCounter = stage.owningContext.getThreadService().getRunnableCounter(); + SignalingCounter runtimeCounter = previousStage.owningContext.getThreadService().getRunnableCounter(); + SignalingCounter newCounter = stage.owningContext.getThreadService().getRunnableCounter(); // runtimeCounter.inc(newCounter); + // stage.logger.error(stage.owningContext.getThreadService().getRunnableCounter().toString()); + + // !!! stage.owningContext = XXX.owningContext !!! + Runnable runnable = wrap(stage); Thread thread = new Thread(runnable); @@ -42,6 +47,10 @@ public class DynamicActuator { thread.start(); + // requirements: + // 1. all new threads from stage must be known to the global context + // 2. number of active threads must be increased by the stage + if (runnable instanceof RunnableConsumerStage) { // do nothing } else if (runnable instanceof RunnableProducerStage) { diff --git a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java index 64deae6a..3a418506 100644 --- a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java +++ b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java @@ -65,4 +65,9 @@ public class SignalingCounter { counter += otherCounter.counter; conditionalNotifyAll(counter); } + + @Override + public String toString() { + return "counter: " + counter + ", " + super.toString(); + } } -- GitLab