Ich studiere über Threads und gleichzeitige Programmierung. Versucht dieses grundlegende Beispiel von, was in der Klasse zur Verfügung gestellt wurde:Kann dieses grundlegende Thread-Verhalten nicht verstehen
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 8
void *printGoGators(void *noArg)
{
printf("Go Gators!\n");
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for (t = 0; t < NUM_THREADS; t++)
{
printf("Creating thread %d\n", t);
rc = pthread_create(&threads[t],
NULL,
printGoGators,
NULL);
if(rc)
{
printf("ERROR %d", rc);
exit(-1);
}
}
pthread_exit(NULL);
}
Dieser Code produziert die folgende Ausgabe. :
Creating thread 0
Creating thread 1
Go Gators!
Creating thread 2
Go Gators!
Creating thread 3
Go Gators!
Creating thread 4
Go Gators!
Creating thread 5
Go Gators!
Creating thread 6
Go Gators!
Creating thread 7
Go Gators!
Go Gators!
Warum ist Go Gators!
nicht direkt gedruckt nach seiner Creating thread #
für alle Threads entspricht? Bitte helfen!
weil Ihre Threads voneinander unabhängig sind und vom Hauptthread, der sie erstellt. So haben Sie nach dem Start keine Kontrolle darüber, welcher Thread zuerst gedruckt wird. – HazemGomaa
So wurde diese Frage für Stackoverflow als zu breit angesehen. Ich sehe niemanden, der andere Antworten anbietet. –
Es ist wirklich schwer, deine Frage zu verstehen. Sie fragen, warum etwas nicht passiert, ohne irgendeinen Grund zu nennen, warum Sie denken, dass es sollte. Sie sehen das Verhalten, das Sie erwarten sollten. Wenn Sie etwas anderes erwarten, sagen Sie, warum wir den Fehler in Ihrer Argumentation erklären können. –