【发布时间】:2012-05-02 12:58:03
【问题描述】:
#include<pthread.h>
#include<stdio.h>
int value=0;
void *runner(void *param);
int main(int argc,char *argv[])
{
int pid;
pthread_t tid;
pthread_attr_t attr;
pid=fork();
if(pid==0){
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,NULL);
pthread_join(tid,NULL);
printf("CHILD VALUE=%d",value);
}
else if(pid>0){
wait(NULL);
printf("PARENT VALUE=%d",value);
}
}
void *runner(void *param){
value=5;
pthread_exit(0);
}
孩子和父母的价值是什么? 孩子和它创建的线程会共享数据吗?所以输出将是 5 和 0?
【问题讨论】:
-
当你尝试时会发生什么?
-
5 代表孩子,0 代表父母。 fork() 创建一个新进程,因此,为您提供空间隔离。
-
很抱歉,这种问题只要运行相关代码就可以轻松搞定。我将关闭您的两个问题,请不要发布第三次。
标签: c multithreading pthreads