Labyrinth-Problem

Ahhhh....
Das dürfte also heißen, dass alle Threads immer die gleiche instanz des Objekts benutzen, und es somit überhaupt keine Probleme mit der Synchronisation geben ... (Wenn ich es richtig verstanden habe)
Ich habs mir dann irgendwie falsch Vorgestellt...

Nein, dadurch entstehen Syncronisationsprobleme erst. Wenn jeder Thread seine eigene Instanz hätte, könnte er die Variablen darin nach belieben verändern.
Probleme gibt es grundsätzlich nur, wenn ein 2. Thread dem ersteren "dreinpfuscht". Threads werden gemäß dem Zeitscheibenmodell abgearbeitet, das heißt jeder Prozessorkern hat seine Threads die er abarbeitet (ist aber natürlich theoretisch auch auf einen anderen Kern übertragbar). Jeder Kern kann nur einen Thread gleichzeitig abarbeiten, und wechselt sich ab. Das Problem kann erst entstehen, wenn ein Thread wärend dem abarbeiten einer unsyncronisierten Thread von der CPU interrupted wird.
Der zweite Thread könnte so eine Änderung, die der erste gerade gemacht hat überschreiben.
 
Ich bin endlich fertig geworden... ich versuch mal in den nächsten tagen eine kurze Doku zu schreiben und den Code zu veröffentlichen
 
Hallo ihr,
Ich möchte euch mein Wissen natürlich nicht vorenthalten. Also wer sich das Labyrinth mal angucken will:
Labyrinth in meinem Blog
Dort könnt ihr euch auch das ganze Programm herunterladen.
Ich hab den Lösungsalgorithmus nicht mit Multithreading sondern mt Rekursion gemacht (erschien mir einfacher ;) ).
Danke nochmals für eure Hilfe.
 
Schon ganz gut, aber du solltest besser das Labyrinth in ein Array der Größe (w+2,h+2) einlesen, damit du automatisch eine Umrandung hinzufügen kannst.
Möglich wäre auch, die Daten nicht in einem Array zu speichern, sondern in mit verzeigerten Objekten, wo jedes Feld einen Link zu seinen 4 Nachbarn hat, wie es bei einer schwach besetzten Matrix üblich ist. Auf diese Weise kannst du dann auch leicht z.B. 'Torus-Welten' oder andere Geometrienimplementieren, wo der obere und untere Rand bzw. der linke und der rechte Rand miteinander verbunden sind. Außerdem können dann alle Felder auf dasselbe Wand-Objekt verweisen; oder du verzichtest ganz auf die Wände und stellst sie als stattdessen null-Referenzen dar.

PS: Man schreibt Sackgasse ;)
 
Zurück