zoukankan      html  css  js  c++  java
  • 线程实例: 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相关知识,后续补充。

  • 相关阅读:
    近来感受
    GIT相关命令
    CMMI评审总结
    Windows下Git Bash的设置
    PHP学习三--常用运算符和结构语句
    PHP学习二--常量
    MYSQL基础十一--存储引擎
    MYSQL基础十--存储过程
    MYSQL基础九--自定义函数
    MYSQL基础八--子查询和连接
  • 原文地址:https://www.cnblogs.com/lcl0421/p/8777800.html
Copyright © 2011-2022 走看看