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

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

Info

Publication number
CN104199730A
CN104199730A CN201410433391.6A CN201410433391A CN104199730A CN 104199730 A CN104199730 A CN 104199730A CN 201410433391 A CN201410433391 A CN 201410433391A CN 104199730 A CN104199730 A CN 104199730A
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.)
Granted
Application number
CN201410433391.6A
Other languages
English (en)
Other versions
CN104199730B (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所示,所述创建任务步骤如下:首先判断是否为定时器任务,若判断为定时器任务,则把定时器间隔作为参数,增加定时器任务队列成员,并记录线程创建时间;若判断不是定时器任务,则判断是否为读任务,若判断为读任务,则获得IO句柄作为参数,参加读任务队列成员,并记录线程创建时间;若判断不是定时任务也不是读任务,则判断是否为写任务,若为写任务,则获得写IO句柄作为参数,参加写任务队列成员,并记录线程创建时间;若判断不是定时任务、读任务、写任务任何一种,则认为是其他任务,创建任务结束。
如附图2所示,所述调度任务的步骤如下:由主函数获得执行就绪任务,然后判断是否有满足条件的任务,若存在满足条件的任务,则执行该任务,执行完该任务后返回重新获得执行就绪任务;若不存在满足条件的任务,则返回去获得执行就绪任务。
在本实施例调度任务中,附图3为所述获得执行就绪任务的流程图,如附图3所示,调度任务中,获得执行就绪任务的过程如下:首先获得***当前时间,判断定时器任务队列是否有就绪的任务,若存在就绪任务,则从定时器任务队列中删除该任务,并执行该定时器任务;若不存在就绪任务,则计算定时器任务队列中距离当前最近的一个待执行任务的时间差,并使用同步IO方法等待定时器时间差,同时读写IO事件第一个就绪任务, 若等待超时则结束;若在等待时限内,发生了IO读事件,则将发生读事件的任务从读队列中移到就绪列队中;若发生发生了IO写事件,则将发生写事件的任务从写队列中移到就绪列队中;此时,若就绪队列为空,则将就绪任务添加到不再使用队列中,并以就绪任务作为返回值。
本发明所述方法是同步I/O复用机制实现的单线程非抢占式多任务处理方法,在保留了等效多线程进行多任务处理的能力的同时,本质上是一种单线程实现,降低了对于代码编程时内存访问和其他资源访问的保护要求。通过该单线程多任务处理方法,在多任务功能要求的快速达成的前提下,保证了程序编码工作的稳定质量,降低了出现内存异常和资源访问互斥的频度。采用该方法,编程人员可以不需要掌握多线程与多任务的技术知识,按照上述方法的技术方案即可实现多任务处理的目的。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

Claims (4)

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

Cited By (11)

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

Citations (4)

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

Patent Citations (4)

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

Cited By (17)

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

Also Published As

Publication number Publication date
CN104199730B (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
CN104199730A (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
Abeni et al. Container-based real-time scheduling in the linux kernel
US7925869B2 (en) Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US7698540B2 (en) Dynamic hardware multithreading and partitioned hardware multithreading
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US9104500B1 (en) Lock-free job scheduler for multi-processor systems
CN101266553B (zh) 基于嵌入式***的多任务管理方法
CN111767159A (zh) 一种基于协程的异步***调用***
Brandenburg Multiprocessor real-time locking protocols
WO2006059543A1 (ja) スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
TWI545503B (zh) 一種在預設嵌入式系統中實現腳本操作的系統
Brandenburg A fully preemptive multiprocessor semaphore protocol for latency-sensitive real-time applications
JP2003271399A (ja) プロセッサ及びプログラム実行方法
CN102779072A (zh) 一种嵌入式***及其应用进程的休眠与唤醒方法
CN109343960A (zh) 一种Linux***的任务调度方法、***及相关装置
CN108196950A (zh) 一种应用于窄带物联网的实时化操作***及其方法
Han et al. Experimental evaluation and selection of data consistency mechanisms for hard real-time applications on multicore platforms
WO2013145199A1 (ja) 仮想計算機のスケジュール方法
CN106775964A (zh) 时间/事件混合触发的操作***架构及任务调度方法
CN115576671A (zh) 一种单线程多任务执行方法、装置、设备及介质
Wellings et al. Asynchronous event handling and real-time threads in the real-time specification for Java
JP2009048358A (ja) 情報処理装置及びスケジューリング方法
Cucu-Grosjean et al. Predictability of fixed-job priority schedulers on heterogeneous multiprocessor real-time systems
US20130283288A1 (en) System resource conserving method and operating system thereof
CN106325983A (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

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.

TR01 Transfer of patent right
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.

CP03 Change of name, title or address