/************************************************************
子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,
接着再回到主线程又循环6 次,如此循环50次,试写出代码。
************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
//全局变量,计算总循环的次数
int count=1;
void *work_func(void)
{
int i=1;//定义子线程循环次数
while(1)
{
if(count>50)
{
break;
}
if(i<=3)
{
printf("子线程正运行第%d次……,count=%d\n",i,count);
i++;
count++;
}
else
{
i=1;
sleep(3);
}
}
pthread_exit("结束子进程!\n");
}
int main()
{
int ret;
int j=1;//主线程循环的次数
//先子线程循环
pthread_t th_p;
void *work_return;
//创建子线程
ret=pthread_create(&th_p,NULL,(void *)work_func,NULL);
if(ret != 0)
{
printf("线程创建失败!\n");
exit(-1);
}
sleep(1);
while(1)
{
if(count>50)
{
break;
}
if(j<=6)
{
printf("主线程正运行第%d次……,count=%d\n",j,count);
j++;
count++;
}
else
{
j=1;
sleep(3);
}
}
ret=pthread_join(th_p,&work_return);
if(ret != 0)
{
printf("线程等待失败!\n");
exit(-1);
}
return 0;
}