#include <pthread.h>
#include <cstdio>
void *printa(void *) {
printf("a");
return NULL;
}
void *printb(void *) {
printf("b");
return NULL;
}
int main() {
pthread_t pa, pb;
pthread_create(&pa, NULL, printa, NULL);
pthread_create(&pb, NULL, printb, NULL);
for(;;);
}
Ich erwarte, dass es "a" und "b" in beliebiger Reihenfolge druckt, aber es kann laufen und verlassen, ohne etwas zu drucken. Warum? ADD: Der Grund ist der Hauptfunktions-Exit, bevor die Threads ausgeführt wurden. Also füge ich ein für (;;); am ende von main, und es scheint, dass "a" und "b" nie gedruckt wird.Warum dieses Stück Code ohne Ausgabe laufen (über Pthread)?
... oder ein anderer Mechanismus, der eine vorzeitige Beendigung des Prozesses verhindert. –