线程_共享内存空间
c
//线程_共享内存空间
#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;
}
运行结果:
bash
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无法退出。