CN104199730B - 一种基于同步i/o复用机制的单线程多任务处理方法 - Google Patents

一种基于同步i/o复用机制的单线程多任务处理方法 Download PDF

Info

Publication number
CN104199730B
CN104199730B CN201410433391.6A CN201410433391A CN104199730B CN 104199730 B CN104199730 B CN 104199730B CN 201410433391 A CN201410433391 A CN 201410433391A CN 104199730 B CN104199730 B CN 104199730B
Authority
CN
China
Prior art keywords
task
ready
queue
timer
synchronous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410433391.6A
Other languages
English (en)
Other versions
CN104199730A (zh
Inventor
刘涛
李伟
于治楼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Group Co Ltd filed Critical Inspur Group Co Ltd
Priority to CN201410433391.6A priority Critical patent/CN104199730B/zh
Publication of CN104199730A publication Critical patent/CN104199730A/zh
Application granted granted Critical
Publication of CN104199730B publication Critical patent/CN104199730B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种基于同步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复用机制实现的单线程非抢占式多任务处理方法,在保留了等效多线程进行多任务处理的能力的同时,本质上是一种单线程实现,降低了对于代码编程时内存访问和其他资源访问的保护要求。通过该单线程多任务处理方法,在多任务功能要求的快速达成的前提下,保证了程序编码工作的稳定质量,降低了出现内存异常和资源访问互斥的频度。采用该方法,编程人员可以不需要掌握多线程与多任务的技术知识,按照上述方法的技术方案即可实现多任务处理的目的。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

Claims (2)

1.一种基于同步I/O复用机制的单线程多任务处理方法,其特征在于,通过同步I/O复用机制实现单线程非抢占式多任务处理,包括两个部分,分别是创建任务步骤和调度任务步骤;
所述创建任务步骤包括:为每组多任务执行序列创建多个独立任务队列,分别是读、写、定时器、当前就绪;每个任务队列中的任务以创建时间作为关键字,任务的编写遵从快进快出原则,若任务有循环执行需要,在任务开始时进行下次运行的预约;
所述创建任务的具体步骤如下:
首先判断是否为定时器任务,若为定时器任务,则把定时间隔作为参数,增加定时器任务队列成员,并记录线程创建时间;
若不是定时器任务,则判断是否为读任务;若为读任务,则获得读I/O句柄作为参数,增加读任务队列成员,并记录线程创建时间;
若不是定时器任务也不是读任务,则判断是否为写任务,若为写任务,则获得写I/O句柄作为参数,增加写任务队列成员,并记录线程创建时间;
若不是定时任务、读任务、写任务任何一种,则认为是其他任务,创建任务结束;
所述调度任务步骤包括:循环的轮询每个任务使用系统I/O的实际情况和定时情况,获得执行就绪任务;依次把满足时间和I/O要求的任务置入当前就绪队列,然后调用执行;
所述获得执行就绪任务的过程如下:
首先获得系统当前时间,判断定时器任务队列是否有就绪的任务,若存在就绪任务,则从定时器任务队列中删除该任务,并执行该定时器任务;若不存在就绪任务,则计算定时器任务队列中距离当前最近的一个待执行任务的时间差,并使用同步I/O方法等待定时器时间差,同时读写I/O事件第一个就绪任务,若等待超时则结束;
若在等待时限内,发生了读事件,则将发生读事件的任务从读队列中移到就绪列队中;若发生了写事件,则将发生写事件的任务从写队列中移到就绪列队中;此时,若就绪队列不为空,则将就绪任务添加到不再使用队列中,以就绪任务作为返回值;若就绪队列为空则结束。
2.根据权利要求1所述的一种基于同步I/O复用机制的单线程多任务处理方法,其特征在于,所述调度任务的具体步骤如下:
由主函数获得执行就绪任务,然后判断是否有满足条件的任务,若存在满足条件的任务,则执行该任务,执行完该任务后返回重新获得执行就绪任务;
若不存在满足条件的任务,则返回去获得执行就绪任务。
CN201410433391.6A 2014-08-29 2014-08-29 一种基于同步i/o复用机制的单线程多任务处理方法 Active CN104199730B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410433391.6A CN104199730B (zh) 2014-08-29 2014-08-29 一种基于同步i/o复用机制的单线程多任务处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410433391.6A CN104199730B (zh) 2014-08-29 2014-08-29 一种基于同步i/o复用机制的单线程多任务处理方法

Publications (2)

Publication Number Publication Date
CN104199730A CN104199730A (zh) 2014-12-10
CN104199730B true CN104199730B (zh) 2018-04-13

Family

ID=52085027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410433391.6A Active CN104199730B (zh) 2014-08-29 2014-08-29 一种基于同步i/o复用机制的单线程多任务处理方法

Country Status (1)

Country Link
CN (1) CN104199730B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204933A (zh) * 2015-09-18 2015-12-30 上海斐讯数据通信技术有限公司 基于单进程的多任务切换执行方法、系统及处理器
US10120818B2 (en) 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command
US9710417B2 (en) 2015-10-01 2017-07-18 International Business Machines Corporation Peripheral device access using synchronous input/output
US10063376B2 (en) 2015-10-01 2018-08-28 International Business Machines Corporation Access control and security for synchronous input/output links
CN106412088B (zh) * 2016-10-25 2019-10-18 深圳市万普拉斯科技有限公司 一种数据同步方法及终端
CN107992370B (zh) * 2017-11-28 2021-01-22 上海机电工程研究所 VxWorks平台多任务软件框架实现方法
CN110096340B (zh) * 2018-01-29 2020-11-17 北京世纪好未来教育科技有限公司 定时任务处理方法及装置
CN110955503B (zh) * 2018-09-27 2023-06-27 深圳市创客工场科技有限公司 任务调度方法及装置
CN113051051B (zh) * 2021-03-12 2024-02-27 北京百度网讯科技有限公司 视频设备的调度方法、装置、设备及存储介质
CN117093355B (zh) * 2023-10-19 2024-02-23 井芯微电子技术(天津)有限公司 一种进程内伪线程调度方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019856A (zh) * 2012-11-23 2013-04-03 上海寰创通信科技股份有限公司 一种多核处理器的非对称调度方法
CN103473138A (zh) * 2013-09-18 2013-12-25 柳州市博源环科科技有限公司 基于线程池的多任务队列调度方法
CN103605498A (zh) * 2013-12-05 2014-02-26 用友软件股份有限公司 单线程任务的多线程执行方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100585563C (zh) * 2006-01-20 2010-01-27 华为技术有限公司 一种定时器任务服务方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019856A (zh) * 2012-11-23 2013-04-03 上海寰创通信科技股份有限公司 一种多核处理器的非对称调度方法
CN103473138A (zh) * 2013-09-18 2013-12-25 柳州市博源环科科技有限公司 基于线程池的多任务队列调度方法
CN103605498A (zh) * 2013-12-05 2014-02-26 用友软件股份有限公司 单线程任务的多线程执行方法及系统

Also Published As

Publication number Publication date
CN104199730A (zh) 2014-12-10

Similar Documents

Publication Publication Date Title
CN104199730B (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
Abeni et al. Container-based real-time scheduling in the linux kernel
CN106293919B (zh) 一种时间触发的嵌入式任务调度装置与方法
US9715406B2 (en) Assigning and scheduling threads for multiple prioritized queues
TWI541725B (zh) 用於管理多核心架構之資源的方法和設備
EP2312441B1 (en) Scheduling of instructions groups for cell processors
CN112416546A (zh) 多任务调度方法、电子装置和计算机存储介质
CN111767159A (zh) 一种基于协程的异步系统调用系统
US20140359636A1 (en) Multi-core system performing packet processing with context switching
Brandenburg A fully preemptive multiprocessor semaphore protocol for latency-sensitive real-time applications
US10271326B2 (en) Scheduling function calls
CN110427257A (zh) 多任务调度方法、装置及计算机可读存储介质
Omar et al. Comparative analysis of the essential CPU scheduling algorithms
CN106775964A (zh) 时间/事件混合触发的操作系统架构及任务调度方法
US6766508B1 (en) Object-oriented system having anonymous scheduler design pattern
Parikh et al. Performance parameters of RTOSs; comparison of open source RTOSs and benchmarking techniques
Zouaoui et al. CPU scheduling algorithms: Case & comparative study
CN111989651A (zh) 在多核系统中管理内核服务的方法和装置
CN114035926A (zh) 应用线程调度方法、装置、存储介质及电子设备
CN113094260B (zh) 一种分布式系统时序关系建模与仿真分析方法
US20080271027A1 (en) Fair share scheduling with hardware multithreading
CN114880075B (zh) 一种用户态虚拟机虚拟核间任务的调度方法及装置
CN117093355B (zh) 一种进程内伪线程调度方法
CN109976895A (zh) 一种数据库的多任务并发处理方法和装置
CN117348994A (zh) 一种线程池配置的更新方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180807

Address after: 250100 S06 tower, 1036, Chao Lu Road, hi tech Zone, Ji'nan, Shandong.

Patentee after: Shandong wave cloud Mdt InfoTech Ltd

Address before: No. 1036, Shun Ya Road, Ji'nan high tech Zone, Shandong Province

Patentee before: Inspur Group Co., Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Patentee after: Inspur cloud Information Technology Co., Ltd

Address before: 250100 Ji'nan science and technology zone, Shandong high tide Road, No. 1036 wave of science and Technology Park, building S06

Patentee before: SHANDONG LANGCHAO YUNTOU INFORMATION TECHNOLOGY Co.,Ltd.