线程_共享内存空间
//线程_共享内存空间#include <stdio.h>
#include <pthread.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;int *pret = NULL;//创建线程ret = pthread_create(&t1,NULL,func1,(void *)¶m);//调用func1函数if(ret == 0){printf("main: create t1 success! \n");}ret = pthread_create(&t2,NULL,func2,(void *)¶m);//调用func2函数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,(void **)&pret);pthread_join(t2,(void **)&pret);return 0;
}
运行结果:
main:create t1 success !
main:create t2 success !
main 139811894569664
main:0
t1:139811811059456 thread is create !
t1:param is 100
t1:1
t2:139811802666752 thread is create !
t2:param is 100
t2:2
main:3
t1:4
t2:5
t1:6
main:7
如果使 t1 = 3时退出,运行结果发现:有的时候能捕获到 t1 == 3,退出线程t1;有的时候捕获不到,t1无法退出。