• 线程实例: c语言实现压力测试,循环运行一定的时间,到时间后把正在运行的步骤执行完毕后退出;


     本文原创,版权属作者个人所有,如需转载请联系作者本人。Q&微:155122733

    --------------------------------------------------------------------------------------------------------

    1 使用线程实现,如下:

    #include <pthread.h>
    #include <stdio.h>
    #include <time.h>
    
    #define E_TIME 1*30
    #define RESULT_OK 0
    
    time_t e_start;
    int tagFlag = 0;
    //1 初始化
    void init()
    {
            e_start = time(NULL);
    }
    //子线程:监控时间
    void watcher(void)
    {
            time_t cur;
            while(1)
            {
                    cur = time(NULL);//不间断获取当前时间
                    if(cur-e_start>=E_TIME)//时间持续E_TIME
                    {
                            tagFlag = 1;//标志位置为1
                            break;//结束循环
                    }
            }
    }
    
    int main()
    {
            pthread_t t1;
            int ret;
            init();
            ret = pthread_create(&t1, NULL, (void*)watcher, NULL);//创建子线程
            if(ret != 0)
            {
                    printf("Create pthread error!
    ");
                    return -1;
            }
            else
            {
                    while(1)
                    {
                            if(tagFlag == 0)
                            {
                                    printf("step1 starting...
    ");//不断执行该动作
                            }
                            if(tagFlag == 0)
                            {
                                    printf("step2 starting...
    ");//不断执行该动作
                            }
                            if(tagFlag == 0)
                            {
                                    printf("step3 starting...
    ");//不断执行该动作
                            }
                            //if(tagFlag)
                            else
                            {
                                    pthread_join(t1, NULL);
                                    return 0;
                            }
                    }
            }
    }

    备注:也可以把四个步骤全部执行完毕后退出,只要把上方程序中的四个步骤放在一个tagFlag判断中即可。

    另外,也可以不创建线程,直接在每个步骤运行时加个时间判断。

    一般采用线程时,基本是要求到达时间后立刻终止运行。而该需求会用到signal相关知识,后续补充。

  • 相关阅读:
    分布式锁的几种实现方式
    分布式锁简单入门以及三种实现方式介绍
    Redis 总结精讲
    Redis 总结精讲 看一篇成高手系统-4
    Request、Response 之 Http 请求
    定时任务 Cron表达式
    跑批利器--批处理应用程序
    使用MultiByteToWideChar转换UTF8为GBK(UTF8在Windows的代码页是CP_UTF8)
    了解 XML 数字签名
    QuickReport根据每行的内容长度动态调整DetailBand1的行高
  • 原文地址:https://www.cnblogs.com/lcl0421/p/8777800.html
Copyright © 2020-2023  润新知