游戏服务器引擎的设计(六)定时器设计

对于游戏服务器来说 定时器必不可少,我们设计定时器的方法一般有两种:

一种是设计一个定时器队列。对定时器的超时时间进行排序,每次在服务器的帧循环中从头开始检查定时器是否超时,如果超时了,把定时器从队列中移除,然后执行定时器回调函数,如果没有超时直接跳出循环。最简单的是我们利用STL库的map容器,map容器的内部实现是红黑树,遍历的时候是从小到大遍历, 我们把定时器的下次执行时间作为键, 每次在帧循环里遍历map容器,如果键小于当前时间则超时了,我们就执行定时器内容,然后删除定时器继续往后遍历。 如果键大于当前时间则没有超时直接跳出遍历。优化的版本是我们设计一个普通的队列,每次检查最小的超时时间,如果超时了就执行定时器,继续检查直到没有超时。而每次我们检查时会找出最小的那个时间节点,所以我们用最小堆算法,每次只查找最小的。这样不需要在每次的插入删除时进行排序,但是每次检查时需要求出最小的那个时间节点。

另一种是在帧上面做的定时器(原理上是个时间轮),这里我根据游戏服务器的特点,自己做了特殊的定时器。超时时间跟帧绑定,比如:我们的逻辑帧时间间隔时30ms, 而我们将在2000ms后执行定时器操作, 则我们把超时时间转换成帧数 (2000 + (30 - 1)) / 30 = 67,  意思

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
555定时器是一种集成电路,可以用于产生各种各样的特定时间脉冲信号。在使用过程中,根据不同的电路结构,可以实现多种不同的应用。 在logisim中设计555定时器,首先需要了解555定时器的基本电路结构和原理。555定时器主要由比较器、RS触发器、控制电路和输出电路等组成,其中输出电路会输出高电平或者低电平的信号。 具体设计步骤如下: 1. 在logisim中创建一个新的电路图,然后选择基本门电路工具箱,并拖动一个555定时器的原件到电路图中。 2. 为555定时器添加电源和地线,然后通过点击生成器工具来开始设计时钟电路。时钟电路的频率是通过时钟组件内部的电容和电阻分频器确定的。 3. 根据电路需求,设置电容和电阻的具体数值,以实现所需的时钟频率。还可以通过调整电容和电阻比例来实现所需的占空比,从而使输出信号持续一定的时间。 4. 完成时钟电路的设计后,开始设计比较器和RS触发器,以实现对输入信号的传递和反转。在比较器和RS触发器之间,需要添加一些逻辑门来控制输出电路的状态。 5. 最后是电路的调试和测试。通过在电路图中添加示波器和LED灯等组件来实时监测电路的运行状态,并通过加入相关元件,检查电路的可靠性和稳定性。 总的来说,通过使用logisim创建一个555定时器电路,可以实现很多基本和高级的电路功能,这有助于理解电路原理,并可以用于学习和开发各种实用电路。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值