Thread Problem
-
Hi,
ich beschäftige mich grad mit Threads und habe da ein kleines Problem. In einer Schleife, erzeuge ich mir 8 Threads:
for (int i=0; i < 4; i++) { pthread_create(&showmessage, NULL, message, (void *)id); pthread_create(&showmessage, NULL, message, (void *)-id); }
Später in der Anwendung, will ich abwarten, dass diese Thread beenden sind und habe da ein:
pthread_join(showmessage, NULL);
stehen.
Leider werden jetzt nicht immer alle Thread ausgeführt. Testweise hatte ich nun mal
pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL); pthread_join(showmessage, NULL);
stehen, damit jeder Thread beendet wird. Leider hatte dies auch nicht funktioniert.
Wie muss es richtig gehen, wenn ich mit Threads arbeite?
Steven
-
> [..] In einer Schleife, erzeuge ich mir 8 Threads [..]
Jeder Thread braucht seine eigene `tid' also musst du acht pthread_t Variablen haben
pthread_t tid[8]; for (int i = 0; i < 8; i++) { pthread_create(&tid[i], NULL, thread_func, param); } for (int i = 0; i < 8; i++) { pthread_join(&tid[i]); }
mfg