From ba4f287d603069b44730bd281d1d323519b64790 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Fri, 12 Jun 2015 00:03:02 +0200 Subject: [PATCH] added first draft of better pipe instantiation --- src/main/java/teetime/framework/Analysis.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java index 956d4190..75e68e86 100644 --- a/src/main/java/teetime/framework/Analysis.java +++ b/src/main/java/teetime/framework/Analysis.java @@ -17,8 +17,10 @@ package teetime.framework; import java.lang.Thread.UncaughtExceptionHandler; import java.util.Collection; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; @@ -189,7 +191,7 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught if (connection.getCapacity() != 0) { interBoundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), connection.getCapacity()); } else { - interUnboundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), connection.getCapacity()); + interUnboundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), 4); } } else { intraThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort()); @@ -197,6 +199,33 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught } } + private void prototypeInstantiatePipes() { + Integer i = new Integer(0); + Map<Stage, Integer> colors = new HashMap<Stage, Integer>(); + Set<Stage> threadableStageJobs = configuration.getThreadableStageJobs(); + for (Stage threadableStage : threadableStageJobs) { + colors.put(threadableStage, i); // Markiere den threadHead + for (Connection connection : configuration.getConnections()) { + // Die Connection gehört zu der Stage + if (connection.getSourcePort().getOwningStage() == threadableStage) { + Stage targetStage = connection.getTargetPort().getOwningStage(); + if (threadableStageJobs.contains(targetStage) /* colors.get(targetStage) == i */) { // Auch auf Farbe prüfen + if (connection.getCapacity() != 0) { + interBoundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), connection.getCapacity()); + } else { + interUnboundedThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort(), 4); + } + } else { + intraThreadPipeFactory.create(connection.getSourcePort(), connection.getTargetPort()); + colors.put(targetStage, i); + } + // configuration.getConnections().remove(connection); remove connection to increase performance + } + } + i++; + } + } + private Thread createThread(final AbstractRunnableStage runnable, final String name) { final Thread thread = new Thread(runnable); thread.setUncaughtExceptionHandler(this); -- GitLab