当前位置:天才代写 > tutorial > C语言/C++ 教程 > 提前认识软件开拓(21) C措施中的按时器

提前认识软件开拓(21) C措施中的按时器

2017-11-01 08:00 星期三 所属: C语言/C++ 教程 浏览:622

副标题#e#

在实际的C措施中,一个模块执行多个操纵是很常见的工作。假如多个操纵同时举办,会呈现措施效率低下、计较机CPU占用率过高档环境,这时就需要对所有操纵的执行顺序作一个公道的布置,这就涉及到按时器的利用。

本文对C措施中的按时器的范例、配置和排除要领等作了具体的先容,为相关开拓事情的开展提供了参考。

一、按时器的界说及分类

我们所熟悉的按时器是一个多任务按时提醒的软件,安装于电脑或手机上。举个例子,我们常常用的闹钟其实就是按时器,它会在我们设定的时间运行某种措施,在其它时间则处于休眠状态。

那么什么是C措施中的按时器呢?C措施中的按时器是措施员编写的用于按时执行某种操纵的措施,是相关C代码的荟萃。这个按时器是“幕后的英雄”,我们可以或许看到的是软件所浮现出来的某项成果,而看不见的是按时器所起的浸染。

按照所起的浸染的差异,C措施中的按时器分为如下两类:

第一类,在多个操纵中设定差异操纵执行顺序的按时器。在一个很大的软件模块中,同时举办多个操纵会低落措施的执行效率,公道地利用按时器可以或许让某些操纵避开措施执行的“岑岭期”,到达舒缓措施执行压力的浸染。这时的按时器所起的浸染和在上下班时间十字路口的红绿灯的浸染雷同。

第二类,用于限制某种操纵的执行时间,若在规按时间内没有执行该操纵则作超时处理惩罚的按时器。这类按时器多用于需要和其它模块举办通信的模块中。假如一个模块向其它模块发了一个很重要的动静,需要比及其它模块复原后才气举办下一步的操纵,那么按时器就在这个时候派上用场了。可以在按时器中设定本模块所能“容忍”的其它模块最迟应答的时间,假如高出了这个时间,则认为对方无应答,直接举办后续操纵。

在C措施中,公道操作按时器,可提高措施的执行效率,同时可让措施浮现出逻辑条理感和严密性。

二、按时器的数据布局

为了完乐成能,一个典范的按时器的数据布局如下:

// 先重界说根基数据范例
    
typedef unsigned char        UINT8;
    
typedef unsigned short int  UINT16;
    
typedef unsigned int           UINT32;
    
     
    
// 按时器的数据布局
    
typedef struct
    
{
    
    ……
    
    ……
    
    UINT8   iUseFlag;            // 该按时器是否正在利用
    
    UINT8   iArrivedFlag;       // 利用该按时器的时间是否已到
    
    UINT8   iTimerType;         // 该按时器的范例
    
    UINT16  iModuleNo;         // 利用该按时器的模块号/历程号等信息
    
    UINT32  iSetTime;            // 设定该按时器的启动时间, 即相对而今, 该按时器在多长时间之后启动
    
    UINT8   iTimerNo;            // 该按时器的编号
    
    UINT8   iQue;                  // 该按时器的存放行列
    
    UINT16  iQuePrev;          // 该按时器的存放位置的前一个结点
    
    UINT16  iQueNext;          // 该按时器的存放位置的后一个结点
    
    ……
    
    ……
    
} TimerStruc_T;

一个按时器布局体所包括的字段按照差异软件产物和项目组的要求而略有区别,但如上面布局体中摆列出来的字段都是需要的。字段的寄义见对应字段后头的注释。


#p#副标题#e#

三、如何配置和排除按时器

3.1 配置按时器的流程

在实际的软件开拓项目中,一般将配置按时器的流程封装为函数。在需要配置按时器的时候,只需要挪用该函数即可。

配置按时器的流程如图1所示。

提前认识软件开辟(21) C法子中的定时器

图1 配置按时器的流程

有关此流程的说明如下:

(1) 在配置按时器之前,先要判定该按时器是否正在利用。假如在利用中,那么要先排除按时器以释放资源。这是为了防备一个按时器有多种用途的环境。

(2) 在获取按时器存放资源之前,要对初始化及信息入队操纵举办加锁处理惩罚。为了防备同样的资源被多个按时器得到。

3.2 排除按时器的流程

排除按时器的操纵同样会被封装为函数。在需要排除按时器的时候,只需要挪用该函数即可。

排除按时器的流程如图2所示。

提前认识软件开辟(21) C法子中的定时器

图2 排除按时器的流程

有关此流程的说明如下:

(1) 在排除按时器之前,先要判定该按时器是否正在利用及排除时间是否到达。假如两者中有一个不满意,则不消排除按时器。

(2) 在排除按时器相关信息之前,为了保持操纵的独一性,同样要举办加锁处理惩罚。

四、总结

跟着措施成果的日益完善和富厚,差异操纵执行顺序加倍显得重要,这就为按时器提供了施展才气的“舞台”。

#p#分页标题#e#

本文以作者的实际项目开拓事情为配景,对C措施中的按时器的范例、配置和排除要领等作了具体的描写,为相关模块的设计和措施的编写提供了有益的参考。

 

    关键字:

天才代写-代写联系方式