线程默认共享数据段、代码段等地址空间,常用的是全局变量。
#include <stdio.h> #include <pthread.h> #include <unistd.h> int g_data=0; void *func1(void *arg) { printf("t1:%ld thread is create\n",(unsigned long)pthread_self()); printf("t1:param is %d\n",*((int *)arg)); while(1){ printf("t1:%d\n",g_data++); sleep(1); } } void *func2(void *arg) { printf("t2:%ld thread is create\n",(unsigned long)pthread_self()); printf("t2:param is %d\n",*((int *)arg)); while(1){ printf("t2:%d\n",g_data++); sleep(1); } } int main() { int ret; int param=100; pthread_t t1; pthread_t t2; ret=pthread_create(&t1,NULL,func1,(void *)¶m); if(ret==0){ printf("main:create t1 success\n" ); } ret=pthread_create(&t2,NULL,func2,(void *)¶m); if(ret==0){ printf("main:create t2 success\n" ); } printf("main:%ld\n",(unsigned long)pthread_self()); while(1){ printf("main:%d\n",g_data++); sleep(1); } pthread_join(t1,NULL); pthread_join(t2,NULL); return 0; }
运行结果,可以看到全局变量g_data一直在累加