代码拉取完成,页面将自动刷新
实现一个链表定时器
不过把升序链表改成带有头结点和尾结点的结构了,这两个节点不存储数据,只是为了操作方便。
升序链表的模式作用如下:每隔固定的时间,就去扫描链表上的定时器。链表上的每个节点都有一个回调函数,本例子中的回调函数是取消注册事件并移除定时器。超时事件处理需要调用回调函数。
链表中的节点是按照事件升序排列的,所以tick()时直接顺序执行就行,而且该函数只需要执行超时的任务,执行完成后立刻从定时器中移除。
该模式是时间轮的基础,典型的应用是心跳检测机制。
注意一点,因为定时器的优先级一般低于I/O处理的优先级,所以一般先做超时标记,留作最后处理定时器事件,代价是定时器的精度受到影响。
个人认为,,代码中最巧妙的一点是client_data与util_timer的指针互联机制,这样可以完成结构之间的相互索引,极大提高处理效率。关于这一点,可以在while循环中事件处理的代码中体现。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。