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

  • 相关阅读:
    Windows2008R2安装DNS和SQLServer200r2服务 (9.18第七天)
    Windows2008R2安装iis和iis下搭建web服务器(9.18 第七天)
    Ubuntu 安装phpmyadmin (9.17第六天)
    Ubuntu Navicat链接mysql (9.17第六天)
    Spring之AOP由浅入深
    oracle并行模式(Parallel)
    转:Java后端面试自我学习
    Spring Security 简介
    spring boot入门
    git--分布式版本管理系统
  • 原文地址:https://www.cnblogs.com/lcl0421/p/8777800.html
Copyright © 2011-2022 走看看