Ich habe Probleme, mein C-Programm zu debuggen, wo das Ziel ist, 5 Threads zu erstellen und jeder von ihnen auf Größe-2-Chunks eines Arrays der Länge 10 arbeiten Das Ziel ist es, die Summe dieses Arrays zu erhalten. Mein aktuelles Programm ist etwas weniger trivial als das, da es dynamische Array-Größen und Thread-Zählungen benötigt, aber ich habe versucht, es zu diesem einfachen Problem zu vereinfachen, und es funktioniert immer noch nicht.C, Pthreads initialisiert in Schleife führt keine zugewiesene Funktion trotz Mutex ordnungsgemäß
dh.,
array = {1 2 3 4 5 6 7 8 9 10}
dann Thread1 auf Array funktioniert [0] und array [1]
und Thread2 arbeitet auf array [2] und array [3]
etc ...
thread5 auf Array arbeitet [8] und array [9]
Wenn ich jedoch meinen Code ausführe, erhalte ich seltsame Ergebnisse, selbst wenn ich eine Mutex-Sperre verwende.
Zum Beispiel ist dies eines meiner Ergebnisse beim Ausführen dieses Programms.
Thread #1 adding 3 to 0 New sum: 3
Thread #1 adding 4 to 3 New sum: 7
Thread #2 adding 5 to 7 New sum: 12
Thread #2 adding 6 to 12 New sum: 18
Thread #3 adding 7 to 18 New sum: 25
Thread #3 adding 8 to 25 New sum: 33
Thread #4 adding 9 to 33 New sum: 42
Thread #4 adding 9 to 42 New sum: 51
Thread #4 adding 10 to 51 New sum: 61
Thread #4 adding 10 to 61 New sum: 71
Sum: 71
Zunächst einmal, warum gibt es keine Tabs vor der "neuen Summe" für die ersten 3 Zeilen? (Siehe mein printf Protokoll in calculate_sum Funktion). Und noch wichtiger: Warum führt thread0 seinen Job nie aus und warum wird Thread 4 zweimal ausgeführt?
"Warum gibt es keine Tabs vor der" Neuen Summe "für die ersten 3 Zeilen?" - es gibt. – immibis