Fehler beim Multithreading in for-Schleife

8

Ich versuche, eine einfache for-Schleife mit Threads hinzuzufügen, aber trotzdem läuft etwas nicht. Ich habe eine Reihe von Gründen überprüft und kann dafür keine Lösung finden.

Ich habe eine einfache Klasse mit zwei Methoden A() und B() . Von der anderen Klasse rufe ich die Methode A() auf. So sieht es aus:

%Vor%

Und dennoch erhalte ich immer noch einige Fehler:

%Vor%

Hat jemand eine Idee was falsch ist?

Nur um noch eine Sache hinzuzufügen. Dies:

%Vor%

funktioniert ohne Probleme.

    
sebap123 25.02.2016, 15:51
quelle

1 Antwort

1

Ich würde vorschlagen, neue und einen Zeiger anstelle von Referenzen zu verwenden.

Während Referenzen schön sind, veranschaulicht die Anzahl der Kommentare die Verwirrung, die in diesem Fall verursacht wird. Wie können Sie nachweisen, dass die Implementierung der Third-Party-Bibliothek (z. B. Std.) So funktioniert, wie Sie es erwarten? und über Plattformen hinweg?

Wenn Sie Folgendes verwenden:

%Vor%

und:

%Vor%

Und natürlich mit einem 'Löschen', wenn Sie mit dem Thread fertig sind, dann ist die Verwirrung beseitigt.

Außerdem lädt der Code die SAME-Instanz der Klasse 'A' für alle Threads in das Array. Wenn Sie Member-Variablen in A innerhalb der Funktion 'B' verwenden, ohne jegliche Art von Multithread-Schutz (zB Semaphoren, kritische Abschnitte usw.), wird Ihr Code niemals richtig funktionieren. Die Verwendung eines 'new' für die Erstellung der Thread-Instanz vermeidet die Probleme, die Kopierkonstruktoren oder Zuweisungsoperatoren mit der Vektorklasse verursachen.

%Vor%     
kgorham 29.03.2016 18:45
quelle

Tags und Links