0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux 编程之经典多级时间轮定时器(下)

jf_78858299 来源:CSDN 作者:叨陪鲤 2023-04-21 14:45 次阅读

2.3 时间轮代码: timewheel.c

/*
 *毫秒定时器  采用多级时间轮方式  借鉴linux内核中的实现
 *支持的范围为1 ~  2^32 毫秒(大约有49天)
 *若设置的定时器超过最大值 则按最大值设置定时器
 **/
#include 
#include 
#include 
#include 
#include 
#include 
#include "list.h"
#include "log.h" 
#define TVN_BITS   6
#define TVR_BITS   8
#define TVN_SIZE   (1<

2.4 编译运行

peng@ubuntu:/mnt/hgfs/timer/4. timerwheel/2. 多级时间轮$ ls
a.out  list.h  log.h  mutiTimeWheel.c
toney@ubantu:/mnt/hgfs/timer录/4. timerwheel/2. 多级时间轮$ gcc mutiTimeWheel.c -lpthread
toney@ubantu:/mnt/hgfs/timer/4. timerwheel/2. 多级时间轮$ ./a.out 
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100

从结果可以看出:如果添加的定时任务是比较耗时的操作,那么后续的任务也会被阻塞,可能一直到超时,甚至一直阻塞下去,这个取决于当前任务是否耗时。

这个理论上是绝不能接受的:一个任务不应该也不能去影响其他的任务吧。但是目前没有对此问题进行改进和完善,以后有机会再继续完善吧。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209506
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136833
  • 定时器
    +关注

    关注

    23

    文章

    3248

    浏览量

    114805
收藏 人收藏

    评论

    相关推荐

    Linux编程之经典多级时间定时器(C语言版)

    上图是5个时间级联的效果图。中间的大是工作,只有在它上的任务才会被执行;其他轮上的任务时间到后迁移到下一级轮上,他们最终都会迁移到工作
    发表于 11-08 14:06 863次阅读

    时间管理和定时器编程基本知识汇总

    Linux系统编程第08期:时间管理和定时器编程 6年嵌入式开发经验,在多家...
    发表于 12-23 08:32

    Linux实时定时器的实现及应用

    在嵌入式平台的开发过程中,由于控制硬件的要求,常常需要提供精度在μs级的定时器;而linux内核由于采用了分时系统,一般不提供这种级别的定时器。笔者在开发高端PDA 的过程
    发表于 04-16 09:19 36次下载

    CHMOS可编程时间间隔定时器芯片82C54

    82C54是专为Intel系列微处理机而设计的一种可编程时间间隔定时器/计数,它是一种通用芯片,在系统软件中可以把多级
    发表于 06-12 22:13 84次下载

    Linux下一种高性能定时器池的实现

    提出Linux用户空间的一种高性能定时器池的实现方法。主要基于时间、红黑树及Linux内核提
    发表于 09-25 14:57 25次下载

    JAVA教程之定时器的使用

    JAVA教程之定时器的使用,很好的JAVA的资料,快来下载吧。
    发表于 04-13 11:41 14次下载

    编程控制器实验教程之定时器指令实验

    编程控制器实验教程之定时器指令实验,很好的学习资料。
    发表于 04-19 13:45 0次下载

    LINUX系统教程之如何在Linux系统进行编程

    本文档的主要内容详细介绍的是LINUX系统教程之如何在Linux系统进行编程主要内容包括了:程序开发过程 ,
    发表于 12-18 19:09 9次下载

    单片机教程之定时器和计数原理及应用

      本文档的主要内容详细介绍的是单片机教程之定时器和计数原理及应用主要内容包括了:定时器、计数原理,Mega8
    发表于 01-14 17:20 4次下载
    单片机教<b class='flag-5'>程之</b><b class='flag-5'>定时器</b>和计数<b class='flag-5'>器</b>原理及应用

    Linux时间子系统中的高精度定时器(HRTIMER)的原理和实现

    虽然大部分时间里,时间可以实现O(1)时间复杂度,但是当有进位发生时,不可预测的O(N)定时器级联迁移
    发表于 05-10 14:11 7698次阅读

    定时器开关怎么设置时间

    定时器开关:又称定时器定时开关、时间定时器开关等,是一种控制用电器定时自动开启、关闭的电气装置
    的头像 发表于 09-08 15:32 3.5w次阅读
    <b class='flag-5'>定时器</b>开关怎么设置<b class='flag-5'>时间</b>

    Linux内核定时器

    Linux内核中,也可以通过定时器来完成定时功能。但和单片机不同的是,Linux内核定时器是一种基于未来
    的头像 发表于 09-22 08:56 1955次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>定时器</b>

    时间定时器开关怎样接线?

    时间定时器:又称时间定时器开关、定时器定时控制
    的头像 发表于 09-28 11:47 7975次阅读

    Linux 编程之经典多级时间定时器(上)

    多级时间的原理也容易理解:就拿时钟做说明,秒针转动一圈分针转动一格;分针转动一圈时针转动一格;同理时间也是如此:当低级轮转动一圈时,高一
    的头像 发表于 04-21 14:45 642次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>编程之</b><b class='flag-5'>经典</b><b class='flag-5'>多级</b><b class='flag-5'>时间</b><b class='flag-5'>轮</b><b class='flag-5'>定时器</b>(上)

    三菱PLC编程实现读出时间定时器

    的功能,而定时器是实现时间控制的关键组件。本文将详细介绍如何使用三菱PLC编程实现读出时间定时器。 1.
    的头像 发表于 06-20 11:11 2426次阅读