C++怎么能间隔一定的时间执行指定的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++怎么能间隔一定的时间执行指定的代码相关的知识,希望对你有一定的参考价值。

某函数内部

while(1)


//间隔100毫秒调用函数1

//间隔500毫秒调用函数2

//间隔1000毫米调用函数3

//间隔5000毫秒调用函数4

//时间超过XXX毫米return;




时间不用特别的精确, 误差在100毫秒之内就可以,而且这里面的每个函数调用的时间不会超过100毫米.

因为有的函数非常耗费资源, 我想通过时间来限制其执行次数,但是另外的函数又要很高执的行次数
有什么好的方法没?不知道我说的你们听懂没??
可能你们误会我的意思了,
我是想从循环开始就开始计时, 这些函数调用的时间间隔是相对于循环开始来说的.并不是执行一个暂停一下在执行另一个.

可以使用延时函数。
在需要间隔的地方执行延时函数可以使系统暂停一段时间,时间由延时函数的参数指定。从而达到要求的目的。

延时函数不是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);
参考技术A “函数调用的时间间隔是相对于循环开始来说的”

按你说的这个,应该是用timer吧,计时器,函数内部管理timer启动关闭就可以了,通过函数SetTimer()函数来创建
每个timer里面写调用代码,本回答被提问者和网友采纳
参考技术B 时间间歇函数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++;//实现没一毫秒加一次

参考技术C 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会造成线程卡住.还有别的办法吗?

追答

这问题我也想过,时间函数不熟,也想过用外部程序计时,实在想不出解决方法

C# 如何间隔一定的时间执行一次代码?

如题,我想间隔一段时间然后执行一次代码,请大家帮帮忙,谢谢!
如果可以的话,真希望能有代码段,这样更能看明白。谢谢,最好是C#的。 settimeout()setinterval()好像不能用,555555我急的,谁能帮帮忙,谢谢了

C#间隔一定的时间执行一次代码:
1、可以使用Timer定时器,设置指定的时间执行一次

在C#里关于定时器类就有3个
1、定义在System.Windows.Forms里
2、定义在System.Threading.Timer类里
3、定义在System.Timers.Timer类里
  System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console Application(控制台应用程序)无法使用。
  System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET Thread Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

参考地址:
1、http://blog.csdn.net/kankankankan2222/article/details/8249602
2、http://blog.csdn.net/hugoandpig/article/details/7743452
参考技术A C#的winform中有Timer控件,可以定时执行指定的代码。
控件的属性中有个设置时间间隔的,忘了是什么名字,默认1000的那个,单位是毫秒。
双击Timer控件在事件里写要在设定的时间间隔后执行的代码就可以了,
Public void 循环执行的代码()



Timer双击事件

循环执行的代码();
本回答被提问者采纳
参考技术B 可以使用定时线程

system.threading.timer创建
参考技术C js有settimeout()setinterval()c#记得也能用记混了

以上是关于C++怎么能间隔一定的时间执行指定的代码的主要内容,如果未能解决你的问题,请参考以下文章

java中如何控制时间间隔?

JavaScript 计时器

如何让cmd命令指定间隔时间执行1个命令

c# 怎么设置 System.Timers.Timer执行次数 t5.AutoReset = false;

java 每间隔一段时间执行一段代码

间隔计时器未在指定时间间隔触发信号