【发布时间】:2016-05-09 05:48:24
【问题描述】:
我正在使用创建子线程的 Pthreads 编写 C 程序。创建子线程后,父线程应该输出两条消息:“parent:begin”,然后它应该打印“parent:done”。子线程“child:begin”和“child:done”也一样。我必须确保主线程在生成的(子)线程之前打印他的第二条消息。我必须遵循实施,但它只会以错误的顺序打印。我想我应该使用标志。任何帮助将不胜感激。
#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;
}
【问题讨论】:
-
您的子线程只发出一条消息。
-
更好的方法是使用
wait系列系统调用,而不是父系统中的繁忙循环。 -
谢谢,我已经更新了代码,我想要实现的是确保主线程在生成的(子)线程之前打印他的第二条消息。
-
目前:1. 父级:开始 2.子级 3.子级:完成 4.父级:结束。
标签: c multithreading pthreads pthread-join