线程中变量的作用范围

来源:互联网 发布:.bat java 编辑:程序博客网 时间:2024/05/21 22:47

/*主线程、副线程中都使用全局变量*/#include<stdio.h>#include<unistd.h>#include<pthread.h>int a=5;void * pthread_func(void * arg){a++;printf("Sub thread: a=%d\n", a);/*a=6*/return NULL;}int main(int argc, char * argv[]){int ret;pthread_t tid;/*创建线程*/ret=pthread_create(&tid, NULL, pthread_func, NULL);if(ret!=0){printf("pthread_create error!\n");return 0;}sleep(1);a++;printf("Main thread: a=%d\n", a);/*a=7*/return 0;}

/*主线程、副线程中都使用局部变量*/#include<stdio.h>#include<unistd.h>#include<pthread.h>void * pthread_func(void * arg){int a=5;a++;printf("Sub thread: a=%d\n", a);/*a=6*/return NULL;}int main(int argc, char * argv[]){int a=5;int ret;pthread_t tid;/*创建线程*/ret=pthread_create(&tid, NULL, pthread_func, NULL);if(ret!=0){printf("pthread_create error!\n");return 0;}sleep(1);a++;printf("Main thread: a=%d\n", a);/*a=6*/return 0;}

/*主线程中使用局部变量,副线程中使用全局变量*/#include<stdio.h>#include<unistd.h>#include<pthread.h>int a=5;void * pthread_func(void * arg){a++;printf("Sub thread: a=%d\n", a);/*a=6*/return NULL;}int main(int argc, char * argv[]){int a=1;int ret;pthread_t tid;/*创建线程*/ret=pthread_create(&tid, NULL, pthread_func, NULL);if(ret!=0){printf("pthread_create error!\n");return 0;}sleep(1);a++;printf("Main thread: a=%d\n", a);/*a=2*/return 0;}