C++循环递增延时,程序间隔一定时间读取一次数据,如果有数据,那么默认延时1S,如果没有数据,延时增加,直到增加到最大值为止,或者读取数据花费了两倍的限制时间等条件重置延时时长。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <time.h> #include <iostream> using namespace std; void delay(int seconds){ clock_t start = clock(); clock_t lay = (clock_t)seconds*CLOCKS_PER_SEC; while((clock()-start)<lay) ; } int main(){ static int delay_time=1; const unsigned int max_wait_time=5;//seconds clock_t start = clock(); while(true){ start = clock(); //function place here begin //your can use i for example as run(&i); to get the value i //that suppose the function run have got a result int i=1; //cout<<"input:"<<endl; //cin>>i; //cout<<"output:"<<i<<endl; //if i is zero,reset delay time //function place here end if ( (clock()-start) < delay_time*CLOCKS_PER_SEC && delay_time < max_wait_time){ delay_time++; cout<<"s++\n"; } //reset condition, may can use one condition for this if ( (clock()-start) > 2*max_wait_time*CLOCKS_PER_SEC or i==0){ delay_time=1; cout<<"s=1\n"; } cout<<"delay "<<delay_time<<" seconds.\n"; delay(delay_time); } return 0; } |
-EOF-