一种基于同步I/O复用机制的单线程多任务处理方法技术

技术编号:10753979 阅读:93 留言:0更新日期:2014-12-11 11:27
本发明专利技术公开了一种基于同步I/O复用机制的单线程多任务处理方法,涉及计算机技术,为同步I/O复用机制实现的单线程非抢占式多任务处理方法,包括创建任务步骤和调度任务步骤两个部分;进行创建任务时,为每组多任务执行序列创建多个独立任务队列,任务的编写遵从快进快出原则;进行调度任务时,循环的轮询每个任务使用系统I/O的实际情况和定时情况,依次把满足时间和I/O要求的任务置入当前就绪队列调用执行。该方法在多任务功能要求的快速达成的前提下,降低了多任务编程时使用多线程模型带来的编码复杂度,降低了出现内存异常和资源访问互斥的频度,提高了系统运行的健壮性,可以快速完成多任务软件的开发任务。

【技术实现步骤摘要】
一种基于同步I/O复用机制的单线程多任务处理方法
本专利技术涉及计算机技术,具体地说是一种基于同步I/O复用机制的单线程多任务处理方法。
技术介绍
在计算机软件编程中,经常需要同时执行多个工作任务,主流操作系统大都提供了多线程的方式来实现多任务处理。多线程通过操作系统提供的内存分配、优先级配置、等待唤醒等调度机制来实现充分利用CPU计算资源,减少用户交互等待的目的。在嵌入式软件编程和PC后台软件编程中,大部分应用在运行时,用户交互操作少、CPU运算量不大、网络连接并发数可控、串行顺序性逻辑执行过程较多。针对这些应用场景,采用操作系统提供的多线程编程方法虽然可以快速实现用户需求,但增加了程序在多线程切换时稳定运行的困难,提高了对编码从业人员的技术素质要求。多线程实现的多任务处理方式,本质上是在单一任务处理流程发生延时等待和同步需求时,由操作系统切换其它任务来接管计算资源,达到宏观上并发执行的效果。多线程编程时使用的系统函数具有可中断和不可中断的区分,在可中断函数执行时,如果操作系统发生任务切换,基于多线程的调度算法不同,并不会保证切换发生时的接手任务执行完毕,优先归还系统控制权给当时的被中断线程。在多个线程同时使用共同的计算资源时(内存、外设等),相较于单线程执行增加了发生的冲突几率。通过多线程实现的多任务在编程时还有以下两个特点:(1)程序设计更复杂多线程的工作流程设计和使用方法虽然都比较简单、但是一旦涉及到共享资源的使用,代码编程对资源的访问方式比单线程复杂,且由于多线程执行时的顺序不确定性,出错后较难重现。(2)资源消耗大多线程的创建、销毁和调度需要额外的计算机资源,对于资源有限的应用场所,提高了实施成本。
技术实现思路
本专利技术针对现有技术存在的不足之处,提供了一种基于同步I/O复用机制的单线程多任务处理方法。本专利技术所述一种基于同步I/O复用机制的单线程多任务处理方法,解决上述技术问题采用的技术方案如下:所述基于同步I/O复用机制的单线程多任务处理方法,提供了一种简洁的多任务实现机制,包括两个部分,分别是创建任务步骤和调度任务步骤。该单线程多任务处理方法所述创建任务步骤主要内容包括:为每组多任务执行序列创建多个独立任务队列,分别是读、写、定时器、当前就绪等。每个任务队列中的任务以创建时间作为关键字,要求任务的编写遵从快进快出原则,如果任务有循环执行需要,在任务开始时进行下次运行的预约。该单线程多任务处理方法所述调度任务步骤主要内容为:循环的轮询每个任务使用系统I/O的实际情况和定时情况,获得执行就绪任务,依次把满足时间和I/O要求的任务置入当前就绪队列,然后调用执行。本专利技术所述一种基于同步I/O复用机制的单线程多任务处理方法与现有技术对比具有的有益效果:通过该基于同步I/O复用机制的单线程多任务处理方法,在保留了等效多线程进行多任务处理的能力的同时,降低了对于代码编程时内存访问和其他资源访问的保护要求,在多任务功能要求的快速达成的前提下,保证了程序编码工作的稳定质量,降低了出现内存异常和资源访问互斥的频度;降低了多任务编程时使用多线程模型带来的编码复杂度,提高了系统运行的健壮性,可以快速完成多任务软件的开发任务。附图说明附图1为本实施例所述创建任务的流程图;附图2为本实施例所述调度任务的执行流程图;附图3为本实施所述获得执行就绪任务的流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图和实施例,对本专利技术的一种基于同步I/O复用机制的单线程多任务处理方法进行详细说明。在嵌入式软件编程和PC后台软件编程应用中的典型多任务需求如下:1)读操作,含文件读和网络socket读;2)写操作,含文件写和网络socket写;3)定时器(Timer)。针对上述的典型应用情况,本专利技术所述基于同步I/O复用机制的单线程多任务处理方法,提供了一种简洁的多任务实现机制,包括两个部分,分别是创建任务步骤和调度任务步骤。该单线程多任务处理方法所述创建任务步骤主要内容为:为每组多任务执行序列(一个程序中一般使用一个多任务执行序列即可)创建多个独立任务队列,分别是读、写、定时器、当前就绪等。每个任务队列中的任务以创建时间作为关键字,要求任务的编写遵从快进快出原则,如果任务有循环执行需要,在任务开始时进行下次运行的预约。该单线程多任务处理方法所述调度任务步骤主要内容为:循环的轮询每个任务使用系统I/O的实际情况和定时情况,依次把满足时间和I/O要求的任务置入当前就绪队列,然后调用执行。实施例1:本实施例基于同步I/O复用机制的单线程多任务处理方法,主要包括创建任务步骤和调度任务步骤,如附图1所示,所述创建任务步骤如下:首先判断是否为定时器任务,若判断为定时器任务,则把定时间隔作为参数,增加定时器任务队列成员,并记录线程创建时间;若判断不是定时器任务,则判断是否为读任务,若判断为读任务,则获得I/O句柄作为参数,增加读任务队列成员,并记录线程创建时间;若判断不是定时任务也不是读任务,则判断是否为写任务,若为写任务,则获得写I/O句柄作为参数,增加写任务队列成员,并记录线程创建时间;若判断不是定时任务、读任务、写任务任何一种,则认为是其他任务,创建任务结束。如附图2所示,所述调度任务的步骤如下:由主函数获得执行就绪任务,然后判断是否有满足条件的任务,若存在满足条件的任务,则执行该任务,执行完该任务后返回重新获得执行就绪任务;若不存在满足条件的任务,则返回去获得执行就绪任务。在本实施例调度任务中,附图3为所述获得执行就绪任务的流程图,如附图3所示,调度任务中,获得执行就绪任务的过程如下:首先获得系统当前时间,判断定时器任务队列是否有就绪的任务,若存在就绪任务,则从定时器任务队列中删除该任务,并执行该定时器任务;若不存在就绪任务,则计算定时器任务队列中距离当前最近的一个待执行任务的时间差,并使用同步I/O方法等待定时器时间差,同时读写I/O事件第一个就绪任务,若等待超时则结束;若在等待时限内,发生了I/O读事件,则将发生读事件的任务从读队列中移到就绪列队中;若发生了I/O写事件,则将发生写事件的任务从写队列中移到就绪列队中;此时,若就绪队列不为空,则将就绪任务添加到不再使用队列中,并以就绪任务作为返回值。本专利技术所述方法是同步I/O复用机制实现的单线程非抢占式多任务处理方法,在保留了等效多线程进行多任务处理的能力的同时,本质上是一种单线程实现,降低了对于代码编程时内存访问和其他资源访问的保护要求。通过该单线程多任务处理方法,在多任务功能要求的快速达成的前提下,保证了程序编码工作的稳定质量,降低了出现内存异常和资源访问互斥的频度。采用该方法,编程人员可以不需要掌握多线程与多任务的技术知识,按照上述方法的技术方案即可实现多任务处理的目的。上述具体实施方式仅是本专利技术的具体个案,本专利技术的专利保护范围包括但不限于上述具体实施方式,任何符合本专利技术的权利要求书的且任何所属
的普通技术人员对其所做的适当变化或替换,皆应落入本专利技术的专利保护范围。本文档来自技高网
...
一种基于同步I/O复用机制的单线程多任务处理方法

【技术保护点】
一种基于同步I/O复用机制的单线程多任务处理方法,其特征在于, 提供了同步I/O复用机制实现的单线程非抢占式多任务处理方法,包括两个部分,分别是创建任务步骤和调度任务步骤;所述创建任务步骤包括:为每组多任务执行序列创建多个独立任务队列,分别是读、写、定时器、当前就绪;每个任务队列中的任务以创建时间作为关键字,要求任务的编写遵从快进快出原则,如果任务有循环执行需要,在任务开始时进行下次运行的预约;    所述调度任务步骤包括:循环的轮询每个任务使用系统I/O的实际情况和定时情况,依次把满足时间和I/O要求的任务置入当前就绪队列,然后调用执行。

【技术特征摘要】
1.一种基于同步I/O复用机制的单线程多任务处理方法,其特征在于,通过同步I/O复用机制实现单线程非抢占式多任务处理,包括两个部分,分别是创建任务步骤和调度任务步骤;所述创建任务步骤包括:为每组多任务执行序列创建多个独立任务队列,分别是读、写、定时器、当前就绪;每个任务队列中的任务以创建时间作为关键字,任务的编写遵从快进快出原则,若任务有循环执行需要,在任务开始时进行下次运行的预约;所述创建任务的具体步骤如下:首先判断是否为定时器任务,若为定时器任务,则把定时间隔作为参数,增加定时器任务队列成员,并记录线程创建时间;若不是定时器任务,则判断是否为读任务;若为读任务,则获得读I/O句柄作为参数,增加读任务队列成员,并记录线程创建时间;若不是定时器任务也不是读任务,则判断是否为写任务,若为写任务,则获得写I/O句柄作为参数,增加写任务队列成员,并记录线程创建时间;若不是定时任务、读任务、写任务任何一种,则认为是其他任务,创建任务结束;所述调度任务步骤包括:循环的轮询每个任务使用系统I/O的实际情况和定时情况,获得执行就绪...

【专利技术属性】
技术研发人员:刘涛李伟于治楼
申请(专利权)人:浪潮集团有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1