サブスレッドが3回ループし、メインスレッドが6回ループし、サブスレッドに戻って3回ループし、メインスレッドに戻って6回ループするので、50回ループしてコードを書いてみます.

/**************************************************** ************

 サブスレッドが 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;
}

おすすめ

転載: blog.csdn.net/weixin_42849105/article/details/123409680