C++怎么能间隔一定的时间执行指定的代码
某函数内部{while(1){//间隔100毫秒调用函数1//间隔500毫秒调用函数2//间隔1000毫米调用函数3//间隔5000毫秒调用函数4//时间超过XXX毫米r...
某函数内部
{
while(1)
{
//间隔100毫秒调用函数1
//间隔500毫秒调用函数2
//间隔1000毫米调用函数3
//间隔5000毫秒调用函数4
//时间超过XXX毫米return;
}
}
时间不用特别的精确, 误差在100毫秒之内就可以,而且这里面的每个函数调用的时间不会超过100毫米.
因为有的函数非常耗费资源, 我想通过时间来限制其执行次数,但是另外的函数又要很高执的行次数
有什么好的方法没?不知道我说的你们听懂没??
可能你们误会我的意思了,
我是想从循环开始就开始计时, 这些函数调用的时间间隔是相对于循环开始来说的.并不是执行一个暂停一下在执行另一个. 展开
{
while(1)
{
//间隔100毫秒调用函数1
//间隔500毫秒调用函数2
//间隔1000毫米调用函数3
//间隔5000毫秒调用函数4
//时间超过XXX毫米return;
}
}
时间不用特别的精确, 误差在100毫秒之内就可以,而且这里面的每个函数调用的时间不会超过100毫米.
因为有的函数非常耗费资源, 我想通过时间来限制其执行次数,但是另外的函数又要很高执的行次数
有什么好的方法没?不知道我说的你们听懂没??
可能你们误会我的意思了,
我是想从循环开始就开始计时, 这些函数调用的时间间隔是相对于循环开始来说的.并不是执行一个暂停一下在执行另一个. 展开
4个回答
展开全部
可以使用延时函数。
在需要间隔的地方执行延时函数可以使系统暂停一段时间,时间由延时函数的参数指定。从而达到要求的目的。
延时函数不是C库函数,所以因编译器不同而有所区别。
一、windows系统的编译器下,可以使用Sleep函数。注意首字母S大写。
函数名: Sleep
功 能: 执行挂起一段时间
用 法: void Sleep(DWORD dwMilliseconds);
头文件:#include <windows.h>
参数的时间单位是毫秒,即使用Sleep(n);可以延时n毫秒。
比如延时1.5秒,可以写作
Sleep(1500);
二、Linux编译器下根据时间的不同,可以使用sleep和usleep,或二者搭配。注意都是小写字母。
二者功能都是执行挂起一段时间,其中sleep单位为秒,usleep单位为微秒。
头文件都是#include <unistd.h>
用法为
void sleep(unsigned long seconds);
void usleep(unsigned long useconds);
如果以秒为单位,需要整数部分调用sleep, 小数部分乘以10^6后,调用usleep。
比如延时1.5秒,可以用
sleep(1);
usleep(500000);
在需要间隔的地方执行延时函数可以使系统暂停一段时间,时间由延时函数的参数指定。从而达到要求的目的。
延时函数不是C库函数,所以因编译器不同而有所区别。
一、windows系统的编译器下,可以使用Sleep函数。注意首字母S大写。
函数名: Sleep
功 能: 执行挂起一段时间
用 法: void Sleep(DWORD dwMilliseconds);
头文件:#include <windows.h>
参数的时间单位是毫秒,即使用Sleep(n);可以延时n毫秒。
比如延时1.5秒,可以写作
Sleep(1500);
二、Linux编译器下根据时间的不同,可以使用sleep和usleep,或二者搭配。注意都是小写字母。
二者功能都是执行挂起一段时间,其中sleep单位为秒,usleep单位为微秒。
头文件都是#include <unistd.h>
用法为
void sleep(unsigned long seconds);
void usleep(unsigned long useconds);
如果以秒为单位,需要整数部分调用sleep, 小数部分乘以10^6后,调用usleep。
比如延时1.5秒,可以用
sleep(1);
usleep(500000);
展开全部
“函数调用的时间间隔是相对于循环开始来说的”
按你说的这个,应该是用timer吧,计时器,函数内部管理timer启动关闭就可以了,通过函数SetTimer()函数来创建
每个timer里面写调用代码,
按你说的这个,应该是用timer吧,计时器,函数内部管理timer启动关闭就可以了,通过函数SetTimer()函数来创建
每个timer里面写调用代码,
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
时间间歇函数Sleep(int);//单位毫秒,不用自己写的。
追问
Sleep会造成线程卡住.还有别的办法吗?
追答
int count=0;//计时器
while(1)
{
if(count%100==0)
函数1;
if(count%500==0)//如果想错开时间可以count%500==50之类的
函数2;
……
if(count==……)
break;
Sleep(1);
count++;//实现没一毫秒加一次
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
t=0;
{Sleep(100); fun1();t=t+100;} //Sleep函数头文件 #include <windows.h>
{Sleep(500); fun2();t=t+500;}
{Sleep(1000); fun3();t=t+1000;}
{Sleep(5000); fun4();t=t+5000;}
if(t>xxx)return ;
追问
Sleep会造成线程卡住.还有别的办法吗?
追答
这问题我也想过,时间函数不熟,也想过用外部程序计时,实在想不出解决方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询