每5分钟调用一次c ++函数

时间:2012-11-26 20:33:37

标签: c++ while-loop

我想每5分钟拨打一次电话 我试过了

AutoFunction(){
    cout << "Auto Notice" << endl;
    Sleep(60000*5);
}

while(1){

    if(current->tm_hour == StartHour && current->tm_min == StartMinut && current->tm_sec == StartSec){
        CallStart();
    }

    AutoFunction();
    Sleep(1000);
}

我希望每1秒while同时刷新call AutoFunction() Sleep;每5分钟一次,但不等待AutoFunction中的while(1){ if(current->tm_hour == StartHour && current->tm_min == StartMinut && current->tm_sec == StartSec){ CallStart(); } Sleep(1000); } while(1){ AutoFunction(); Sleep(60000*5); }

因为我必须每1秒刷新一次while(1)以检查启动另一个功能的时间

我想这样做

{{1}}

但我认为两者都不会合作

谢谢

1 个答案:

答案 0 :(得分:1)

对于我们这些不熟悉线程和Boost库的人来说,这可以通过一个while循环来完成:

void AutoFunction(){
    cout << "Auto Notice" << endl;
}

//desired number of seconds between calls to AutoFunction
int time_between_AutoFunction_calls = 5*60;

int time_of_last_AutoFunction_call = curTime() - time_between_AutoFunction_calls;

while(1){
    if (should_call_CallStart){
        CallStart();
    }

    //has enough time elapsed that we should call AutoFunction?
    if (curTime() - time_of_last_AutoFunction_call >= time_between_AutoFunction_calls){
        time_of_last_AutoFunction_call = curTime();
        AutoFunction();
    }
    Sleep(1000);
}

在这段代码中,curTime是我编写的一个函数,它将Unix时间戳作为int返回。从您选择的时间库中替换适当的任何内容。