Wie erstellt man n Threads?

8

Ich versuche, ein Multithread-Programm zu schreiben, die Anzahl der Threads basierend auf der Eingabe über die Kommandozeile, und deshalb kann ich keine vorgefertigten Threads programmieren. Ist das ein gültiger Weg?

%Vor%

Hier ist mein Ergebnis der unten vorgeschlagenen Änderungen. Scheint gut zu funktionieren.

%Vor%     
Brian D 10.02.2011, 23:56
quelle

3 Antworten

7

Was ist im ersten Zyklus? Werden die Array-Elemente auf nicht initialisiert gesetzt?

Also ich denke, das ist was du brauchst:

%Vor%

Es erzeugt threads -Threads und startet foobar_function in jedem. Und du hast (wenn alles gut geht :)) ihre IDs im thread Array. So können Sie zum Beispiel den zweiten Thread abbrechen, indem Sie pthread_cancel(thread[1]) etc.

aufrufen     
user332325 11.02.2011, 00:03
quelle
1

Die erste for -Schleife ist nicht gültig C, und ich bin mir nicht sicher, was Sie tun sollen. Entfernen Sie es einfach und der Rest des Codes sieht ok aus, abgesehen von der falschen Umsetzung in foobar_function . Die Besetzung sollte sein:

%Vor%

Aber wenn der Typ dies nicht bereits oder etwas sehr nahe ist, hat Ihr Programm wahrscheinlich ein undefiniertes Verhalten. Es wäre besser, die Funktionssignatur zu fixieren, so dass keine Umwandlung erforderlich ist.

    
R.. 11.02.2011 00:22
quelle
-2

Wenn Sie versuchen, ein Multithread-Programm zu schreiben, aber nicht verstehen, wie Sie eine dynamisch große Datenstruktur zuweisen, tun Sie möglicherweise Dinge falsch .

Lerne laufen, bevor du rennst.

Erwägen Sie die Verwendung einer einfacheren Sprache und vermeiden Sie die Verwendung von (expliziten) Threads.

Threads sind sehr schwierig korrekt zu verwenden; dynamisch große Arrays sind sehr einfach zu erreichen (sogar in C ziemlich einfach)

    
MarkR 02.05.2011 19:32
quelle

Tags und Links