文档章节

仿DelayTime定时器

梦想游戏人
 梦想游戏人
发布于 2015/05/17 10:27
字数 206
阅读 66
收藏 1
#include"iostream"
#include"windows.h"
#include "functional"
#include "time.h"
#include "math.h"
using namespace std;

class Ref
{

};



class DelayTime: public Ref
{
public:
	static DelayTime*create(float time, const function<void(void)> &f)
	{
		auto ss = new DelayTime;
		ss->func = f;
		ss->time = time*60;
		return ss;
	}

	function<void()> func;

	void run( )
	{
		func();
	}


	float time;
	float nowTime = 0;

};
int a = 0, b = 0;

class FrameManger :public Ref
{
public:
	FrameManger()
	{
		for (int i = 0; i < 100; i++)
		{
			queue[i] = nullptr;
		}
	}
	void addChild(DelayTime *pChild)
	{
		queue[count++] = pChild;
		
	}
	void Loop()
	{
		Sleep(rand()%5);
		for (int i = 0;i<count;i++)
		{
	
			if (queue[i] == nullptr)return;
			queue[i]->nowTime++;
			if (queue[i]->nowTime >= queue[i]->time)
			{
				 queue[i]->run();
				 cout << "    "<<clock()-a<<endl;
				 queue[i]->nowTime = 0;
				 a = clock();
			
			}
		}


	}
	 DelayTime* queue[100];
	 int count = 0;
};



int main()
{

	FrameManger*fr = new FrameManger;

	fr->addChild(DelayTime::create(1.0, [=]{cout << "callback_1"; }));
	fr->addChild(DelayTime::create(2.0, [=]{cout << "callback_2"; }));

	a = clock();


	LARGE_INTEGER nFreq;
	LARGE_INTEGER nLast;
	LARGE_INTEGER nNow;
	long long Interval;

	QueryPerformanceFrequency(&nFreq);
	Interval = (long long)(1/60.0 * nFreq.QuadPart);
	cout << "x=" << nFreq.QuadPart << endl;
	QueryPerformanceCounter(&nLast);
	while (1)
	{
		QueryPerformanceCounter(&nNow);
		if (nNow.QuadPart - nLast.QuadPart >Interval)//计算cpu频率计数差值
		{
			nLast.QuadPart = nNow.QuadPart;
			fr->Loop();
		}
		else
		{
			Sleep(0);
		}


	}
	






	system("pause");
	return 0;
}


© 著作权归作者所有

下一篇: 获取时间
梦想游戏人
粉丝 41
博文 461
码字总数 132517
作品 0
成都
私信 提问
iOS基于FreeStreamer的仿网易云音乐播放器

前言 前段时间写过一个基于VLCKit实现的网易云音乐播放demo-GKAudioPlayerDemo,以及3篇文章 iOS-VLCKit实现仿网易云音乐播放音乐(一) iOS-VLCKit实现仿网易云音乐播放音乐(二) iOS-VLCK...

QuintGao
2018/05/11
0
0
bbossgroups 线程池使用

线程池使用 1.1 线程池配置 可以在任意的aop xml配置文件中配置线程池,只需将相关的xml配置文件直接或者间接导入manager-provider.xml文件既可,这里以一个thread.xml文件为列来说明线程池的...

bboss
2010/04/02
0
0
仿QQ录音以及振幅动画实现

仿QQ录音以及振幅动画实现 Harries Blog™2017-12-251 阅读 githttpCDNcatGitHubhttpsDDL 我们尽量的把QQ的录音功能对应的细节都实现了。。。 本篇实现的功能: 1、封装AVAudioRecorder以及A...

Harries Blog™
2017/12/25
0
0
activemq延迟执行,消费者会实时得到消息问题

目前的情况是生产者告诉TCP端想要延迟执行 TextMessage message = session.createTextMessage(newsJson); long delayTime = 1 * 60* 1000; message.setLongProperty(ScheduledMessage.AMQ_S......

贺小康
2016/04/15
1K
2
Esp8266学习之旅③ 利用 " 软件定时器 " 定时0.5秒闪烁点亮一盏LED。(附带demo)

欢迎来到物联网智能家居顶量级别wifi模块Esp8266学习之旅。 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时...

xh870189248
2017/10/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据教程分享Scala系列之模式匹配和样例类

好程序员大数据教程分享Scala系列之模式匹配和样例类 1.样例类 在Scala中样例类是一中特殊的类,样例类是不可变的, 可以通过值进行比较,可用于模式匹配。 定义一个样例类: 构造器中每一个...

好程序员官网
3分钟前
1
0
让nginx上的静态网页在访问的时候没有html后缀

需求背景: 公司产品小姐姐觉得这个访问带html后缀不专业,要求访问不带html后缀 nginx 配置 #原配置 location / { index index.html index.htm index.php; try_files $...

Linux_Anna
3分钟前
1
0
beetl的内置函数

函数调用Beetl内置函数请参考附录,以下列出了常用的函数date 返回一个java.util.Date类型的变量,如 date() 返回一个当前时间(对应java的java.util.Date); ${date( "2011-1-1" , "yy...

gantaos
4分钟前
1
0
spring cloud 2.x版本 Gateway自定义过滤器教程

前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 [toc] 本文基于前两篇文章eureka-server、eureka-client、eureka-ribbon、eureka-feign和spring-gataway的实现。 参考......

毛毛向前冲V5
7分钟前
2
0
VPGAME 的 Kubernetes 迁移实践

作者 | 伍冲斌 VPGAME 运维开发工程师 导读:VPGAME 是集赛事运营、媒体资讯、大数据分析、玩家社群、游戏周边等为一体的综合电竞服务平台。总部位于中国杭州,在上海和美国西雅图分别设立了...

阿里巴巴云原生
13分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部