基于C语言实现管理软件多任务的方法与流程

文档序号:18475094发布日期:2019-08-20 20:54阅读:288来源:国知局
基于C语言实现管理软件多任务的方法与流程

本发明是关于实现多个任务的智能管理方法,特别是关于一种基于c语言实现管理软件多任务的方法。



背景技术:

软件功能的实现是由程序来实现,在实际编程过程中,会根据总体设计或者用户的需求来进行功能开发。然而,由于很多时候都是多任务开发,开发过程中或者开发完成后,往往会出现先前的规划不够全面或者用户增加需要时,这样开发人员会在原有代码上进行迭代开发,这样单个函数的体积就会越来越大,随之而来的就是出现各式各样的bug,旧的bug尚未解决,新写的代码又会引入各种不确定的bug隐患,调试过程更是苦不堪言,后来接手的开发人员往往需要通读前面开发所写的代码才能继续进行开发,这严重影响了开发人员的开发效率,影响开发进度,也给产品稳定性增加了很多不确定性。

基于现有功能进行程序开发时,当需求变更时,软件开发会增加新的任务处理,因此存在有如下的缺点:

1、单个函数功能越来越多,代码量越来越大。

2、新老bug交织在一起,调试起来需要区分是之前遗留bug,还是增加代码新引入的bug,增加了调试难度。

3、后来接手开发的人员需要通读之前开发的代码,由于编程风格和习惯问题,往往顺利接手需要时日,影响开发效率。

4、代码封装性不好,可移植性差。

公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。



技术实现要素:

本发明的目的在于提供一种基于c语言实现管理软件多任务的方法,其能够兼容之前代码而进行快速迭代开发,提高了调试效率。

为实现上述目的,本发明提供了一种基于c语言实现管理软件多任务的方法,包括如下步骤:(a)根据需求确定任务id、任务类型、初始化入口函数和退出函数,进行单个任务的归集(tcb)任务的创建;(b)向tcb中注册任务id的命令集合,以便根据不同的id命令来适配不同的任务处理流程;(c)根据不同的id命令注册与服务器连接的不同的处理函数;(d)将完成处理函数注册的tcb的任务添加到任务管理链表,并将任务id的运行状态置位;(e)通过任务id在tcb任务管理链表中找到对应任务id的处理函数,设置运行标注位,并启动运行;以及(f)重复步骤(a)~(e),进行下一任务的创建。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法还包括:通过注册的id任务接收数据,任务管理器根据不同的任务id进行任务的调度派发,调度函数根据不同的任务类型进行相应数据的拷贝和处理。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法还包括:如果任务处理过程中出现异常,则根据任务id中相应的错误码调取相应的错误处理函数。

在一优选的实施方式中,任务类型包括监听、短处理、长处理。

在一优选的实施方式中,在与服务器连接的处理函数中建立线程来处理与服务器通讯数据,并且其中,任务id与处理函数一一对应。

在一优选的实施方式中,该方法将单个任务中所有用到的信息都封装在同一个数据结构中,信息包括:任务命令id、运行状态、任务类型标识、接收数据缓冲区、接收数据长度、线程id、互斥锁、初始化函数指针、退出函数指针、线程服务处理函数、私有数据指针、运行错误码,用户运行错误处理函数指针、数据包命令集合。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法将任务定义成结构体类型的节点,每个节点为一个任务,通过任务管理链表对节点进行管理。

在一优选的实施方式中,其中,任务管理器主要函数为增加新节点函数、删除指定节点函数、查找节点函数、遍历节点调用任务函数、核心调度函数。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法通过控制任务的运行标志位来控制任务的开始、暂停和退出,并通过互斥锁实现线程之间信息的同步。

与现有技术相比,根据本发明的基于c语言实现管理软件多任务的方法具有如下优点:本发明是基于c语言实现多任务管理,将一个任务中所有用到的信息都封装在一个数据结构里,将任务定义成结构体类型的节点,通过链表对节点进行管理,从而达到对所有任务管理的目的,本发明的方法在需求增加或变更时,单个函数的代码量很少增加。并且能够兼容之前代码进行快速迭代开发,不易产生新bug,调试效率高,新手介入开发比较快,便于更快推进项目进度。同时代码封装性好,结构清晰,可复制性和移植性强。

附图说明

图1是根据本发明一实施方式的基于c语言实现管理软件多任务的方法流程图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

如图1所示,根据本发明优选实施方式的基于c语言实现管理软件多任务的方法,包括如下步骤:(a)根据需求确定任务id、任务类型、初始化入口函数和退出函数,进行单个任务的归集tcb任务的创建;(b)向tcb中注册任务id的命令集合,以便根据不同的id命令来适配不同的任务处理流程;(c)根据不同的id命令注册与服务器连接的不同的处理函数;(d)将完成处理函数注册的tcb的任务添加到任务管理链表,并将任务id的运行状态置位;(e)通过任务id在tcb任务管理链表中找到对应任务id的处理函数,设置运行标注位,并启动运行;以及(f)重复步骤(a)~(e),进行下一任务的创建。

上述方案中,基于c语言实现管理软件多任务的方法还包括:通过注册的id任务接收数据,任务管理器根据不同的任务id进行任务的调度派发,调度函数根据任务类型进行相应数据的拷贝和处理。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法还包括:如果处理过程中出现异常,则根据任务id中相应的错误码调取相应的错误处理函数。

在一优选的实施方式中,任务类型包括监听、短处理、长处理。

在一优选的实施方式中,该方法将单个任务中所有用到的信息都封装在同一个数据结构中,信息包括:任务命令id、运行状态、任务类型标识、接收数据缓冲区、接收数据长度、线程id、互斥锁、初始化函数指针、退出函数指针、线程服务处理函数、私有数据指针、运行错误码,用户运行错误处理函数指针、数据包命令集合。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法将任务定义成结构体类型的节点,通过任务管理链表对节点进行管理,达到对所有任务管理的目的,其中,主要函数包括增加新节点函数、删除指定节点函数、查找节点函数、遍历节点调用任务函数、核心调度函数。

在一优选的实施方式中,基于c语言实现管理软件多任务的方法通过控制任务的运行标志位来控制任务的开始、暂停和退出,并通过互斥锁实现线程之间信息的同步。

以下介绍本发明的一个具体实施例:

基于c语言实现管理软件多任务的方法包括如下步骤:

1、如上文所述,将tcb中的每个任务定义为一个节点,通过对节点的管理达到对任务管理的目的,首先需要定义tcb的管理功能函数,包括tcb调度派发任务函数、遍历tcb任务链表函数、向tcb管理链表增加节点函数、向tcb管理链表删除指定节点、删除整个tcb管理链表、通过命令id查找指定节点、遍历tcb整个链表依次调用其任务函数。

2、根据需求确定任务id、任务类型、初始化入口函数和退出函数,进行单个任务的归集tcb任务的创建。以创建服务器监控任务为例:定义任务id为server_connect_tcb_id,任务类型为listendeal,初始化函数为serverconnectinit,初始化函数指针为null(暂时未用),退出函数为null(由于函数需要一直运行,所有退出函数指针null),退出函数数据指针为null(由于函数需要一直运行,所有退出函数数据指针null),私有数据指针为null(此处无私有数据),初始化函数主要包括读取系统配置文件进行网络连接准备,设置监听心跳周期,定义与服务器通讯的相关命令码及数据传输状态等内容,为数据通讯做准备。

3、向tcb中注册任务id的命令集合,以便根据不同的命令来适配不同的处理流程,即根据业务需求,需要预先定义id命令集合。

4、根据不同的id命令注册与服务器连接的不同的处理函数,此步骤就是将步骤2中任务id对应的任务加入tcb任务管理链表,需要定义与服务器连接的处理函数,一般情况下会在此处理函数中建立线程来处理与服务器通讯数据,其中,任务id与处理函数需要一一对应,来适配不同的任务处理需要。

5、将注册的tcb的任务添加到任务管理链表,并将任务id的运行状态置位;

6、通过任务id在任务管理链表中找到对应任务id的处理函数,设置运行标注位,并启动运行,获得服务器监控任务;

7、重复步骤2~6,进行下一任务的创建;

8、通过上述服务器监控任务接收数据,任务管理器根据不同的任务id进行任务的调度派发,调度函数根据任务类型进行相应数据的拷贝和处理。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1