查看: 2769|回复: 7

[项目] 最近打算做个真正的软件定时器

[复制链接]
  • TA的每日心情
    奋斗
    2015-12-29 13:50
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-3 15:49:38 | 显示全部楼层 |阅读模式
    分享到:
    嵌入式里面我们经常提到定时器,英文叫timer。但其实那个按中文意思不叫定时器,叫做延时器。
    我的思路是用空间换取简单的算法
    首先时间单位为年月日时分秒,以100年12个月31天24小时60分60秒为单位。设计一个指针数组大小为100+12+31+24+60+60
    =287个指针。
    1-100为年 从2016年开始
    101-112为月
    XXXXXXX

    假设我现在定时到2017年xxxxxxxxx,然后将此值对当前时间做差,得出剩余时间,假设为2年1个月3天20时x分x秒。
    那么这个定时器将进入第第二个指针所指的链表。当一年过去时,只需将timer从第2个链表,移动到101个链表,因为是1个月。
    最后的60个链表根据链表就是保存了当前剩余时间分别是从1秒到59秒的timer。所以秒中断查询这些链表,不为空则该链表下的全部到时间了。不知大家明白了吗,欢迎讨论
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-12-29 13:50
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-3 15:54:02 | 显示全部楼层
    上面描述有误,不用做差,直接当产生年中断,月 xxx 分中断时,比较值大于等于当前系统时间就移到下一个单位,移入下一个单位时根据最高值进入相应的链表。当秒中断时若值相等说明时间到了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-12-29 13:50
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-3 15:55:55 | 显示全部楼层
    这种方法的好处是不用做任何减法,就算是定时一年以上,也只做了六次链表移动
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-6 08:34
  • 签到天数: 539 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-7-3 15:58:06 | 显示全部楼层
    高大上的东西,,,,表示不懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-12-29 13:50
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-3 16:14:08 | 显示全部楼层
    对于延时器,直接采用天数就可以了,因为月份的天数以及闰月,年的闰年。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-10-17 12:07
  • 签到天数: 306 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-7-4 11:39:33 | 显示全部楼层
    略负责。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-12-29 13:50
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-7-7 09:00:56 | 显示全部楼层
    什么意思啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-7 11:24:54 | 显示全部楼层
    表示看不明白的路过。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 19:16 , Processed in 0.189623 second(s), 29 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.