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相关知识,后续补充。

  • 相关阅读:
    重启机器导致mysql启动失败
    setTimeout 的方式实现 setInteval
    4.1 k8s-pod的基本操作
    Git
    leetcode -1
    面试-总结
    网络基础
    问题总结
    Notepad++安装
    Django 使用Form组件完成登录注册
  • 原文地址:https://www.cnblogs.com/lcl0421/p/8777800.html
Copyright © 2011-2022 走看看