版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/Ang_ie/article/details/52038854
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
int i=0; //定义一个全局变量,看2个线程之间都引用该变量,对该变量的影响
void* mythread1(void* d) //创建第一个用户线程程序
{
for(i=0;i<10;i++)
{
printf("pthread1:->%c\n",*((char*)d)); //打印出数据
sleep(2); //睡眠延时2秒
*((char*)d)=*((char*)d)+1; //改变要显示的数据
}
return NULL; //返回值
}
void* mythread2(void) //创建第二个用户线程序
{
for(i=0;i<15;i++)
{
printf("pthread2:%d\n",i); //打印显示全局变量
if(i==4) //可以屏蔽,只是判断exit对程序的影响
{
printf("exit!!!\n");
exit(0);
}
sleep(1); //睡眠延时1秒
}
return NULL;
}
int main(void)
{
pthread_t pt1,pt2; //创建线程ID指针
char i='1';
if(pthread_create(&pt1,NULL,(void*)mythread1,(void*)&i))//创建线程,返回值为0则表示创建成功
{
printf("Create pthread1 Error!\n");
}
if(pthread_create(&pt2,NULL,(void*)mythread2,NULL))//创建线程,返回值为0表示创建成功
{
printf("Create pthread1 Error!\n");
}
printf("main:->%c\n",i);//打印出主线程中的变量值,是否被线程更改
pthread_join(pt1,NULL);//等待线程1的结束返回值为0
pthread_join(pt2,NULL);//等待线程2的结束返回值为0
printf("main:->%c\n",i);//打印主线程中的值,看是否被线程更改
return 0;
}
没有使用exit()函数的结果:
使用了exit()函数的结果]: