任务1:定义一个全局变量 int a=10,主线程能否访问到,分支线程能否访问到;
任务2:分支线程中修改上述的a = 20, 问主线程中访问该a,是10还是20;
任务3:在主线程定义一个局部变量int b=1,分支线程能否访问到b;
任务4:在分支线程定义一个局部变量int c=2,主线程能否访问到c;
任务5:如果任务34不能访问到,则如何修改代码让对方能够访问到;
#include "head.h"
int i=0;
int a =10;
void* callBack(void* arg)
{
a =20;
while(i<9)
{
sleep(1);
printf("nihao\n");
i++;
printf("B:%d\n",a);
}
//pthread_exit(NULL);
}
int main(int argc, const char *argv[])
{
int i = 0;
pthread_t tid;
//构建一个线程
if(pthread_create(&tid,NULL,callBack,0)!=0)
{
fprintf(stderr,"pthread_create failed __%d__\n",__LINE__);
return -1;
}
while(i<9)
{
printf("hello world\n");
printf("A:%d\n",a);
// pthread_join(tid,NULL);//阻塞等待分支线程退出
sleep(1);
i++;
}
return 0;
}
任务1成立,任务2主线程第一次为10后面为20
任务3:在主线程定义一个局部变量int b=1,分支线程能否访问到b;
不能
任务4:在分支线程定义一个局部变量int c=2,主线程能否访问到c;
不能
任务5:如果任务34不能访问到,则如何修改代码让对方能够访问到;
定义为全局变量
利用static延长局部变量c的生命周期,然后设置函数返回值,在主函数内定义一个变量来接函数的返回值