Skip to content
Snippets Groups Projects
Commit f81d2fb1 authored by NET-D3v3l0p3r's avatar NET-D3v3l0p3r
Browse files

Seltsames Verhalten: 1 Kern schneller als 4 Kern mit Queue, 4 Kern schneller...

Seltsames Verhalten: 1 Kern schneller als 4 Kern mit Queue, 4 Kern schneller als 1 Kern mit Stack...
parent 82beabdc
Branches
No related tags found
No related merge requests found
...@@ -39,7 +39,7 @@ public class Explorer { ...@@ -39,7 +39,7 @@ public class Explorer {
(int) SharedRessources.getInstance().getVisitMatrix()[index] (int) SharedRessources.getInstance().getVisitMatrix()[index]
.getZ(); .getZ();
if (currentStepsOnField <= steps) { if (currentStepsOnField <= steps + SharedRessources.getEpsilon()) {
return; return;
} }
......
...@@ -68,10 +68,7 @@ public class ParallelPathfinder { ...@@ -68,10 +68,7 @@ public class ParallelPathfinder {
x += dx; x += dx;
y += dy; y += dy;
} }
return path; return path;
} }
public void draw(Graphics g) { public void draw(Graphics g) {
...@@ -81,11 +78,28 @@ public class ParallelPathfinder { ...@@ -81,11 +78,28 @@ public class ParallelPathfinder {
SharedRessources.getInstance().getWallMatrix()[i + j * SharedRessources.getInstance().getWidth()]; SharedRessources.getInstance().getWallMatrix()[i + j * SharedRessources.getInstance().getWidth()];
if (b) { if (b) {
g.setColor(Color.blue); g.setColor(Color.blue);
} else {
Vec3 currentVec
=
SharedRessources.getInstance().getVisitMatrix()[i + j * SharedRessources.getInstance().getWidth()];
if (currentVec.getX() == 0 && currentVec.getY() == 0)
g.setColor(Color.black);
else {
int green = (int) currentVec.getZ();
if (green >= 255)
green = 255;
Color color
= new Color(0, green, 0);
g.setColor(color);
}
g.fillRect(i * 1, j * 1, 1, 1); g.fillRect(i * 1, j * 1, 1, 1);
} }
} }
} }
} }
} }
...@@ -10,14 +10,19 @@ import java.util.concurrent.LinkedBlockingQueue; ...@@ -10,14 +10,19 @@ import java.util.concurrent.LinkedBlockingQueue;
public class WorkingExplorers extends EagerWorkingThread { public class WorkingExplorers extends EagerWorkingThread {
private Collection<Explorer> currentWaitingExplorers;
public WorkingExplorers() { public WorkingExplorers() {
super(); super();
this.startListen(); this.startListen();
System.out.println("[*] Thread initialized @" + this.getName()); System.out.println("[*] Thread initialized @" + this.getName());
} if (SharedRessources.isUsingQueue())
currentWaitingExplorers
= new ConcurrentLinkedQueue<>();
else currentWaitingExplorers = new Stack<Explorer>();
private ConcurrentLinkedQueue<Explorer> currentWaitingExplorers = new ConcurrentLinkedQueue<Explorer>(); // suited for maze only!!! }
@Override @Override
public void onBegin() { public void onBegin() {
...@@ -25,10 +30,16 @@ public class WorkingExplorers extends EagerWorkingThread { ...@@ -25,10 +30,16 @@ public class WorkingExplorers extends EagerWorkingThread {
@Override @Override
public void onTrigger() { public void onTrigger() {
if (!currentWaitingExplorers.isEmpty()) if (!currentWaitingExplorers.isEmpty()) {
currentWaitingExplorers
if (SharedRessources.isUsingQueue())
((ConcurrentLinkedQueue<Explorer>) currentWaitingExplorers)
.poll() .poll()
.explore(); .explore();
else ((Stack<Explorer>) currentWaitingExplorers)
.pop()
.explore();
}
} }
@Override @Override
...@@ -39,7 +50,13 @@ public class WorkingExplorers extends EagerWorkingThread { ...@@ -39,7 +50,13 @@ public class WorkingExplorers extends EagerWorkingThread {
} }
public void add(Explorer explorer) { public void add(Explorer explorer) {
this.currentWaitingExplorers.offer(explorer);
if (SharedRessources.isUsingQueue())
((ConcurrentLinkedQueue<Explorer>) currentWaitingExplorers)
.offer(explorer);
else ((Stack<Explorer>) currentWaitingExplorers)
.push(explorer);
this.trigger(); this.trigger();
} }
......
...@@ -19,6 +19,26 @@ public class SharedRessources { ...@@ -19,6 +19,26 @@ public class SharedRessources {
USING_CORES = cores; USING_CORES = cores;
} }
private static int EPSILON;
public static void setEpsilon(int epsilon) {
EPSILON = epsilon;
}
public static int getEpsilon() {
return EPSILON;
}
private static boolean USE_QUEUE;
public static void useQueue(boolean status) {
USE_QUEUE = status;
}
public static boolean isUsingQueue() {
return USE_QUEUE;
}
private static SharedRessources sharedRessources; private static SharedRessources sharedRessources;
public static SharedRessources getInstance() { public static SharedRessources getInstance() {
......
...@@ -23,7 +23,10 @@ public class MainWindow extends Game { ...@@ -23,7 +23,10 @@ public class MainWindow extends Game {
@Override @Override
public void loadGame() { public void loadGame() {
SharedRessources.setMaximumCores(Integer.MAX_VALUE); SharedRessources.setMaximumCores(1);
SharedRessources.setEpsilon(0);
SharedRessources.useQueue(true);
try { try {
// MAZE GENERATED WITH http://www.mazegenerator.net/ // MAZE GENERATED WITH http://www.mazegenerator.net/
MapLoader.getDefault().load(ImageIO.read(new File("examples/maze.png"))); MapLoader.getDefault().load(ImageIO.read(new File("examples/maze.png")));
...@@ -63,7 +66,7 @@ public class MainWindow extends Game { ...@@ -63,7 +66,7 @@ public class MainWindow extends Game {
g.setColor(Color.red); g.setColor(Color.red);
for (var pt : pts) { for (var pt : pts) {
g.fillRect(pt.x * 1, pt.y * 1, 1, 1); g.fillRect(pt.x - 2, pt.y - 2, 4, 4);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment