Я пишу программу на C с использованием Pthreads, которая создает дочерний поток. После создания дочернего потока родительский поток должен вывести два сообщения: «parent: begin», затем он должен напечатать «parent: done». То же самое для дочернего потока «child: begin» и «child: done». Я должен убедиться, что основной поток печатает свое второе сообщение до того, как порожденный (дочерний) поток. Я должен выполнить его, но он печатает только в неправильном порядке. Я предполагаю, что должен использовать флаги. Любая помощь будет оценена по достоинству.Pthread in C basic print
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
volatile int done = 0;
void *child(void *arg) {
printf("child\n");
done = 1;
printf("child:done");
return NULL;
}
int main(int argc, char *argv[]) {
printf("parent: begin\n");
pthread_t c;
pthread_create(&c, NULL, child, NULL); // create child
while (done == 0); // spin
printf("parent: end\n");
return 0;
}
Ваша детская нить только испускает одно сообщение. – uselpa
Лучше всего это сделать с семейством системных вызовов ['wait'] (http://linux.die.net/man/2/wait) вместо цикла занятости в родительском. – kaylum
Спасибо, я обновил код, и я хотел бы добиться того, чтобы основной поток печатал его второе сообщение до появления порожденного (дочернего) потока. –