`
关中刀客
  • 浏览: 26189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

仿照linux定时器实现自己的定时器管理器策略

 
阅读更多
以前在网上看到了linux系统中定时器实现的策略,感觉很不错,虽然没有使用什么RBTree==的优秀算法,就仅仅使用数组,链表来实现的,但是性能个方面没有什么问题。感触"简单就是美"阿!最近自己需要一个定时器,所以就仿照这个来实现自己的定时器管理器,并且作了进一步的优化和改进,并且还需要考虑多线程中串行话的问题。
来说说自己的实现策略吧!
我使用了两个缓冲区,一级缓冲区是一个定长的数组,存放在固定时间内将触发的所有事件,二级缓冲区时一个链表,存放时间比较长才出发的事件,然后我的主循环就只轮训一级缓冲区,每次处理固定位置的所有事件,当到达数组末尾的时候,说明所有的事件已经处理完毕,这个时候,需要从二级缓冲区中找到下一个数组长度时间内需要处理的事件,插入到一级缓冲区中。整体的逻辑算是很清楚了,但是看目前的代码,还是比较的2(^_^),关键处理很多的指针的指针。
如果您有更好的建议和策略,欢迎与我联系
E_mail: guanzhongdaoke@gmail.com
Blog:   guan-zhong-dao-ke.blog.163.com

                                      关中刀客
                                            2008-05-15
分享到:
评论

相关推荐

    仿照vc定时器,我自己封装的CppTimer定时器类

    我用C++封装的跨平台定时器类,CppTimer类。...注意:本类仿照vc的ontimer实现,如果是Windows的窗口应用程序项目,请先屏蔽掉dlg窗体基类自带的OnTimer方法后,在public继承CCppTimer类,来使用定时器。

    仿照linux dpm机制,实现自己的dpm.docx

    "仿照 Linux DPM 机制,实现自己的 DPM" 本文介绍了如何仿照 Linux DPM 机制,实现自己的 DPM 框架。在实时操作系统中,没有 DPM 框架,所以我们可以仿照 Linux 的 DPM 框架,来实现我们自己的 DPM。 1. 结构体...

    仿照linux的buddy+slub内存管理算法

    仿照linux的buddy+slub内存管理算法,可以在裸机中应用标准内存管理库函数,如malloc free等

    DSP28335简易定时器设计

    可以仿照此例程,设计自己的定时器应用,如实现一个简单的LED闪烁程序,或者更复杂的电机速度控制。 总之,"DSP28335简易定时器设计"是一个良好的学习起点,通过深入理解定时器的工作原理和应用,可以为后续的DSP...

    使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip

    使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip 使用c++基于Qt框架开发的任务管理器,UI仿照win10....

    C# 实现Windows的资源管理器

    在本文中,我们将深入探讨如何使用C#编程语言来实现一个功能完备的Windows资源管理器。这个项目旨在创建一个自定义的应用程序,该程序能够模拟并扩展Windows内置的资源管理器,提供文件和文件夹的基本操作,如新建、...

    任务管理器自己仿照windows任务管理器做的程序管理器

    【描述】:这个自定义的程序管理器是根据Windows任务管理器的设计理念打造的,主要目的是为了实现类似的功能,包括但不限于查看当前运行的应用程序、后台进程、系统性能指标(如CPU、内存、硬盘和网络使用情况),...

    仿照ButterKnife,实现自己的自动注入框架

    本篇将详细介绍如何仿照ButterKnife,实现自己的自动注入框架。 首先,我们需要理解ButterKnife的核心原理。ButterKnife的主要功能是通过注解处理器(Annotation Processor)在编译时生成相应的绑定代码,这些代码...

    基于Linux的内核链表源代码

    能不能有一种办法把所有链表中操作方法里共同的部分提取出来用一套标准方法实现,然后把不同的部分留着让具体链表的实现者自己去处理。 3、内核链表的设计思路 (1)内核链表中实现一个纯链表的封装,以及纯链表的...

    仿照github实现客户端

    这个应用旨在提供与GitHub官方客户端类似的用户体验,允许用户浏览、搜索、克隆仓库,以及管理自己的账户和个人项目。 首先,我们来深入了解一下MVP模式。MVP全称为Model-View-Presenter,是一种设计模式,常用于...

    仿照ElementUI中的TimePicker实现的WPF 版时间选择器(TimePicker)

    总结,实现一个仿照ElementUI TimePicker的WPF版时间选择器,主要涉及WPF的UI设计、C#编程、MVVM模式、数据绑定以及事件处理。通过这样的实践,开发者可以更好地理解和运用WPF的强大功能,同时也能学习到前端UI设计...

    Linux实现类似find命令的myfind

    仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件

    C#winform仿windows资源管理器DEMO

    【C# WinForm仿Windows资源管理器DEMO详解】 C# WinForm仿Windows资源管理器DEMO是一个基于C#编程语言和Windows Forms框架构建的小型应用程序,旨在为开发者提供一个模仿真实Windows资源管理器功能的示例代码。这个...

    仿qq界面实现(仿照qq2008版界面实现)

    在本文中,我们将深入探讨如何使用C++编程语言来实现一个仿照QQ2008版界面的应用程序。QQ作为一款流行的即时通讯软件,其用户界面设计独特且易用,吸引了大量的用户。为了重现这样的用户体验,我们需要理解界面设计...

    实现一个文件查找程序(linux)实现代码

    仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件。其命令格式如下: myfind PATH -option 参数 [-print] [-exec 命令 {} \;] PATH:查找的起始目录。 -...

    仿照Launcher的Workspace实现左右滑动切换

    总之,仿照 Launcher 的 Workspace 实现左右滑动切换是一项涉及手势检测、视图操作和动画设计的任务。通过自定义布局组件,我们可以实现类似原生 Launcher 的交互体验,为用户提供更为便捷的操作方式。

    linux2.6.32下rootkit,仿照all_root

    标题提到的"linux2.6.32下rootkit,仿照all_root"是指针对Linux内核版本2.6.32的一个Rootkit实现,这个实现是基于旧版的all_root工具进行修改,使其适应了新的内核版本。 all_root原本是为Linux 2.4内核设计的,而...

    利用C++仿照string设计实现自己的字符串类型课程设计实验报告

    这涉及到深拷贝,确保新对象有自己的内存空间并复制原始对象的字符串内容。 3. **串赋值**:重载赋值运算符`=`使得可以将字符串常量或另一个String对象的值赋给当前对象。这里需要处理自赋值的情况,以防止内存泄漏...

    操作系统课程设计,使用c++基于Qt框架开发的任务管理器,ui仿照win10.zip

    在本项目中,"ui仿照win10"意味着我们需要利用Qt的QWidgets、QLayouts等组件来模仿Windows 10的任务管理器界面,包括进程列表、性能图表、应用历史记录等视图。 在任务管理器的核心功能实现上,我们将涉及以下知识...

    操作系统课程设计:使用c++基于Qt框架开发的任务管理器,UI仿照win10.zip

    操作系统课程设计:使用C++基于Qt框架开发的任务管理器,UI仿照Win10 在计算机科学领域,操作系统是至关重要的组成部分,它管理并协调计算机硬件和软件资源,为用户提供服务。C++是一种通用的、面向对象的编程语言...

Global site tag (gtag.js) - Google Analytics