首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 内核定时器实验

同理, Linux 要运行,也是需要一个系统时 钟的,至于这个系统时钟是由哪个定时器提供的,笔者没有去研究过 Linux 内核。...设置好以后打开 Linux 内核源码根目录下的.config 文件,在此文件中 CONFIG_HZ 为 100, Linux 内核会使用 CONFIG_HZ 来设置自己的系统时 钟。...Linux 内核使用全局变量 jiffies 来记录系统从启动以来的系统节拍数,系统启动的时候会 将 jiffies 初始化为 0, jiffies 定义在文件 include/linux/jiffies.h...2、 add_timer 函数 add_timer 函数用于向 Linux 内核注册定时器,使用 add_timer 函数向内核注册定时器以后, 定时器就会开始运行,函数原型如下: void add_timer...msecs_to_jiffies(2000);/* 超时时间 2 秒 */ 23 timer.data = (unsigned long)&dev; /* 将设备结构体作为参数 */ 24 25 add_timer

2.1K10

如何实现一个定时器?

” 定时器作用 定时器在各种场景都需要用到,比如游戏的Buff实现,Redis中的过期任务,Linux中的定时任务等等。顾名思义,定时器的主要用途是执行定时任务。...logn) 哈希表+链表(时间轮):插入O(1),删除O(1),过期expire平均执行O(1)(最坏为O(n)) 不同开源框架定时器实现方式不一,如,libuv采用最小堆来实现,nginx采用红黑树实现,linux...定时器接口封装 作为定时器,需要封装以下4类接口给用户使用: 创建定时器:init_timer 添加定时任务:add_timer 取消定时任务:cancel_timer 执行到期任务:expire_timer...ti.tv_sec / 1000000; } zskiplist *init_timer() { // 初始化定时器 return zslCreate(); } zskiplistNode *add_timer...ngx_rbtree_init(&timer, &sentinel, ngx_rbtree_insert_timer_value); return 0; } // 添加定时任务 void add_timer

1.5K71
领券