Hi,
ich moechte eine XML Datei einlesen und Objekt fuer Objekt in der Datei parallel (am besten Threads=Anzahl CPUs) bearbeiten. Am Ende der Berechnung in einem Thread wird dann in einem Feld, auf dass alle Threads zugreifen sollen, der Wert um 1 erhoeht (diesen Schreibzugriff, denke ich, muss man locken). Dieses Feld ist in der Klasse, in der auch der berechnende Code ist.
Bis jetzt laeuft das so, dass die XML-Datei geparst wird, und immer wenn ein komplettes Objekt eingelesen wird, wird das Objekt an eine Prozedur weitergegeben. Nun koennte ich diese Prozedur auch run nennen, nur bekommt sie halt kein Argument. Was kann man da machen? Ist die einzige Moeglichkeit, dass man in die Klasse ein temporaeres Objekt einbaut, dass dann immer von run gelesen wird? Aber bekommt man das sicher hin?
btw.: Muss man bei Schleifenvariablen etc. auch aufpassen, dass die Threads sich da nicht ueberschneiden (soll ja gleicher code, nur mit anderen Daten sein)? Wie macht man das?
Ich hoffe, ich konnte mich klar ausdruecken.
Danke
ich moechte eine XML Datei einlesen und Objekt fuer Objekt in der Datei parallel (am besten Threads=Anzahl CPUs) bearbeiten. Am Ende der Berechnung in einem Thread wird dann in einem Feld, auf dass alle Threads zugreifen sollen, der Wert um 1 erhoeht (diesen Schreibzugriff, denke ich, muss man locken). Dieses Feld ist in der Klasse, in der auch der berechnende Code ist.
Bis jetzt laeuft das so, dass die XML-Datei geparst wird, und immer wenn ein komplettes Objekt eingelesen wird, wird das Objekt an eine Prozedur weitergegeben. Nun koennte ich diese Prozedur auch run nennen, nur bekommt sie halt kein Argument. Was kann man da machen? Ist die einzige Moeglichkeit, dass man in die Klasse ein temporaeres Objekt einbaut, dass dann immer von run gelesen wird? Aber bekommt man das sicher hin?
btw.: Muss man bei Schleifenvariablen etc. auch aufpassen, dass die Threads sich da nicht ueberschneiden (soll ja gleicher code, nur mit anderen Daten sein)? Wie macht man das?
Ich hoffe, ich konnte mich klar ausdruecken.
Danke