我想每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}}
但我认为两者都不会合作
谢谢
答案 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返回。从您选择的时间库中替换适当的任何内容。