CN108228330B - 一种串行化的多进程任务调度方法和装置 - Google Patents

一种串行化的多进程任务调度方法和装置 Download PDF

Info

Publication number
CN108228330B
CN108228330B CN201810119531.0A CN201810119531A CN108228330B CN 108228330 B CN108228330 B CN 108228330B CN 201810119531 A CN201810119531 A CN 201810119531A CN 108228330 B CN108228330 B CN 108228330B
Authority
CN
China
Prior art keywords
event
executed
specific
list
queue
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
CN201810119531.0A
Other languages
English (en)
Other versions
CN108228330A (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.)
Beijing Abt Networks Co ltd
Original Assignee
Beijing Abt Networks 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 Beijing Abt Networks Co ltd filed Critical Beijing Abt Networks Co ltd
Priority to CN201810119531.0A priority Critical patent/CN108228330B/zh
Publication of CN108228330A publication Critical patent/CN108228330A/zh
Application granted granted Critical
Publication of CN108228330B publication Critical patent/CN108228330B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开一种串行化的多进程任务调度方法和装置,其中,所述方法包括:S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表;S200、启动多项通过单线程管理的工作进程;S300、记录与所述工作进程的子进程通信的ipc文件描述符;S400、注册io事件、与所述io事件对应的io事件处理函数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;S500、在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;S600、执行所述步骤S500中读取出的一个所述待执行事件,返回所述步骤S500。本申请中,管理进程采用单线程管理多项工作进程,简化任务调度复杂度,没有死锁风险。

Description

一种串行化的多进程任务调度方法和装置
技术领域
本申请涉及多进程任务调度技术领域,尤其涉及一种串行化的多进程任务调度方法 和装置。
背景技术
进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比 如说CPU(寄存器),IO,内存,网络资源等。进程常常被定义为程序的执行,可以把一 个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥 有的数据和变量只属于它自己。进程是具有一定独立功能的程序关于某个数据集合上的 一次运行活动,是系统进行资源分配和调度的一个独立单位。管理进程是操作系统的职 能之一,主要是对处理机进行管理。为了提高CPU的利用率而采用多道程序技术。通过 进程管理来协调多道进程之间的关系,使CPU得到充分的利用。
线程,有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系 统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可 少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可 以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的 相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
现有技术中,为了更好的利用多核CPU的性能,在软件实现的方案中,经常会出现由一个管理进程启动多个工作进程并发执行以获得更高的效率的方案。此时管理进程就需要启用多个线程同时和多个工作进程进行进程间通信,收集任务执行结果和下发新的任务指令,如图1所示的现有技术中管理进程与工作进程通信的结构示意图。当管理进 程同时处理多个工作进程发送的报告或请求时,会出现多个线程改变同一个全局变量的 情况,就要对全局变量进行加锁以获取数据的一致性,也有方案通过共享内存的方式进 行进程间通信,此时需要对共同访问的内存区域进行加锁来保证数据的一致性。
然而,采用现有技术时,任务调度过程中需要考虑全局变量的一致性,任务调度复杂度较高;如果通过加锁的方式保证数据一致性的,此时同一时间只有一个线程或者进 程会访问某个全局变量。加锁顺序不对或者任务状态切换复杂时容易出现两持锁线程或 进程相互等待的情况,发生死锁想象。
发明内容
本申请提供一种串行化的多进程任务调度方法和装置,以解决管理进程在处理多进 程任务时,任务调度复杂度较高且易产生死锁的技术问题。
第一方面,本申请提供一种串行化的多进程任务调度方法,所述方法包括:
S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表;
S200、启动多项通过单线程管理的工作进程;
S300、记录与所述工作进程的子进程通信的ipc文件描述符;
S400、注册io事件、与所述io事件对应的io事件处理函数和io事件回调函数至 io事件列表,其中,所述io事件为ipc文件描述符;
S500、在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
S600、执行所述步骤S500中读取出的一个所述待执行事件,返回所述步骤S500。
结合第一方面,在第一方面第一种可能的实现方式中,所述在所述特定事件列表和 所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件的步骤包括:
S501、判断所述特定事件列表是否存在满足所述特定事件成立条件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件 处理函数作为所述待执行事件添加至所述待执行队列中;
S502、判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数 和io事件回调函数作为所述待执行事件添加至所述待执行队列中。
结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述 分别检测所述特定事件列表的特定事件成立条件和所述io事件列表的io事件成立条件的步骤之后还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立 条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中;
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所述 检测与子进程交互的ipc文件描述符的方法为通过select方法或poll方法检测。
结合第一方面的实现方式,在第一方面第四种可能的实现方式中,根据所述工作进 程的历史运行数据,确定所述特定事件。
第二方面,本申请提供一种串行化的多进程任务调度装置,所述装置包括:
特定事件列表注册模块:用于注册特定事件和与所述特定事件对应的特定事件处理 函数到特定事件列表;
工作进程启动模块:用于启动多项通过单线程管理的工作进程;
ipc文件描述符记录模块:用于与所述工作进程的子进程通信的ipc文件描述符;
io事件列表注册模块:用于注册io事件、与所述io事件对应的io事件处理函数 和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;
待执行事件查找模块:用于在所述特定事件列表和所述io事件列表中,查找待执行 事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
待执行事件执行模块:用于执行所述步骤S500中读取出的一个所述待执行事件,返 回所述步骤S500。
结合第二方面,在第二方面第一种可能的实现方式中,所述待执行事件查找模块包 括:
特定事件判断模块:用于判断所述特定事件列表是否存在满足所述特定事件成立条 件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件 处理函数作为所述待执行事件添加至所述待执行队列中;
io事件判断模块:用于判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数 和io事件回调函数作为所述待执行事件添加至所述待执行队列中。
结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述 待执行事件查找模块还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立 条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中。
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
结合第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述 检测与子进程交互的ipc文件描述符的方法为通过select方法或poll方法检测。
结合第二方面的实现方式,在第二方面第四种可能的实现方式中,所述特定事件列 表注册模块之前,所述装置还包括:
特定事件确定模块:用于根据所述工作进程的历史运行数据,确定所述特定事件。
由以上技术可知,本申请提供了一种串行化的多进程任务调度方法和装置,其中,所述方法包括:S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定 事件列表;S200、启动多项通过单线程管理的工作进程;S300、记录与所述工作进程的 子进程通信的ipc文件描述符;S400、注册io事件、与所述io事件对应的io事件处理 函数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;S500、 在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待 执行队列中,读取一个所述待执行事件;S600、执行所述步骤S500中读取出的一个所述 待执行事件,返回所述步骤S500。本申请中,管理进程通过单线程管理多个工作进程, 通过单线程管理可以确保简化任务调度的复杂度和消灭死锁风险。不存在现有技术中多 线程处理子进程请求的情况,简化了任务调度的复杂度,因为同一时间只有一个函数在 执行,所以没有死锁风险。同时,解决了现有技术中,管理进程启动多个线程进行进程 间通信时会增加系统消耗的问题。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单 地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的现有技术中管理进程与工作进程通信的结构示意图;
图2为本申请实施例提供的一种管理进程与工作进程通信的结构示意图;
图3为本申请实施例提供的一种串行化的多进程任务调度方法的流程图;
图4为本申请实施例提供的另一种串行化的多进程任务调度方法的流程图;
图5为本申请实施例提供的一种串行化的多进程任务调度装置的结构示意图;
图6为本申请实施例提供的另一种串行化的多进程任务调度装置的结构示意图。
具体实施方式
通常,在软件实现的过程中,需要通过操作系统中的重要职能之一的管理进程来启 动多个工作进程,多个工作进程并发执行以获得更高的效率。此时管理进程通过同时启用多个线程和多个工作进程来完成进程间通信,但是任务调度过程中需要考虑全局变量的一致性。现有技术中,普遍通过加锁的方式保证数据一致性的,加锁后,同一时间只 有一个线程或者进程会访问某个全局变量,但是加锁顺序不对或者任务状态切换复杂时 容易出现两持锁线程或进程相互等待的情况,最终发生死锁的现象。
为了解决上述问题,参见图2,本申请实施例提供的一种管理进程与工作进程通信的结构示意图,因为管理进程只是进行任务调度,因此不会像工作进程会有耗时较长或 者阻塞性的任务,一个线程就可以同时管理多个工作进程。
基于此,为了管理进程通过单线程管理多个工作进程,简化任务调度的复杂度和消 灭死锁风险,本申请提供一种串行化的多进程任务调度方法。
实施例一
参阅图3,本申请实施例提供的一种串行化的多进程任务调度方法的流程图,该方法包括:
S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表;
在一些实施例中,工作进程可能要完成大量的操作任务,但是工作进程在运行的过 程中很可能出现特殊事件。
例如,以使用穷举的方式破解服务器密码为例,管理进程不断产生下一个要尝试的 用户名和密码并将所述用户名和密码分发给工作进程,工作进程使用用户名和密码登录 服务器。在这个过程中,可能会出现所有用户名和密码都已经尝试的情况,此时要做的是清理环境;也可能会出现工作进程异常退出的情况,此时需要启动新的工作进程。在 上述两个例子中,出现所述用户名和密码都已经尝试的情况可称之为所述特定事件列表 中的特定事件,其相对应的特定事件处理函数为清理环境;工作进程异常退出也可称之 为所述特定事件列表中的特定事件,其相对应的特定事件处理函数为启动新的工作进程。
S200、启动多项通过单线程管理的工作进程;
本申请实施例中,管理进程通过单线程管理多个工作进程,通过单线程管理可以确 保简化任务调度的复杂度和消灭死锁风险。不存在现有技术中多线程处理子进程请求的 情况,简化了任务调度的复杂度,因为同一时间只有一个函数在执行,所以没有死锁风险。同时,也解决了现有技术中,管理进程启动多个线程进行进程间通信时会增加系统 消耗的问题。
S300、记录与所述工作进程的子进程通信的ipc文件描述符;
本申请实施例中,IPC(进程间通信)指至少两个进程或线程间传送数据或信号的一 些技术或方法。进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并 进行协调工作,才有了进程间通信。举一个典型的例子,使用进程间通信的两个应用可 以被分类为客户端和服务器,客户端进程请求数据,服务端回复客户端的数据请求。有 一些应用本身既是服务器又是客户端,这在分布式计算中,时常可以见到。这些进程可 以运行在同一计算机上或网络连接的不同计算机上。进程间通信技术包括消息传递、同 步、共享内存和远程过程调用。IPC是一种标准的Unix通信机制。
S400、注册io事件、与所述io事件对应的io事件处理函数和io事件回调函数至 io事件列表,其中,所述io事件为ipc文件描述符;
现有技术中,以启动四个工作进程为例,采用以下两种方法,第一种方法采用在管理进程启动四个线程,分别和四个工作进程交互,这样四个线程大部分事件都在等待工 作进程的输入/输出,资源利用率比较低。另一种方法使用没有管理进程的方式,每个工 作进程自身生成新的用户名和密码,这样需要四个进程相互告知自身已经尝试过的用户 名和密码,实现过程中的复杂度比较高。本申请实施例中,采用管理进程通过单线程管 理四个所述工作进程,不存在等待工作进程的输入/输出,资源利用率较高。
本申请实施例中,所述io事件列表中记录的内容为工作进程的常规行为,再以使用 穷举的方式破解服务器用户名和密码为例,在步骤S300中启动四个工作进程,在步骤S400中,对应注册四个io事件,分别对应工作进程0、工作进程1、工作进程2和工作 进程3。所述io事件的处理函数全部定义为产生新的用户名和密码,所述io事件回调 函数为将所述新的用户名和密码发送给对应的工作进程。
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外 的一方调用的,用于对该事件或条件进行响应。
S500、在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
在工作进程运行时会出现特定事件,也可能出现io事件,也就是常规事件。当发生特定事件和io事件时会发送有关于事件的相应信号,此时如果满足条件则可加入待执行队列中等待执行,如果不满足条件则需要继续查找满足加入待执行队列的条件的事件。
S600、执行所述步骤S500中读取出的一个所述待执行事件,返回所述步骤S500。
将所述步骤S500中读取的一个所述待执行事件执行后,返回所述步骤S500,可持续在所述特定事件列表和所述io事件列表中查找满足加入待执行队列的条件的事件。
本申请实施例,注册特定事件和与所述特定事件对应的特定事件处理函数到特定事 件列表,所述特定事件为满足某些特定条件时要执行的事件;启动多项通过单线程管理的工作进程,在启动的多项工作进程中,会产生与所述工作进程的子进程通讯的ipc文 件描述符;记录与所述工作进程的子进程通信的ipc文件描述符;下一步注册io事件、 与所述io事件对应的io事件处理函数和io事件回调函数至io事件列表,其中,所述 io事件为ipc文件描述符,所述io事件是指满足常规条件时要执行的事件;在所述特 定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列 中,读取一个所述待执行事件;执行上一步中读取出的一个所述待执行事件,再返回上 一步继续添加所述待执行事件至待执行队列中。
实施例二
参加图4,本申请实施例提供的另一种串行化的多进程任务调度方法的流程图。
所述在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行 事件至待执行队列中的步骤包括:
S501、判断所述特定事件列表是否存在满足所述特定事件成立条件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件 处理函数作为所述待执行事件添加至所述待执行队列中;
所述特定事件成立条件为所述特定事件可以加入到所述待执行队列的判定标准,参 考步骤S100的实例,所述特定事件成立条件为接收到的信号与所述特定事件列表中的特 定事件匹配成功,此时,可将该特定事件和所述特定事件对应的处理函数加入到待执行队列中,例如,在Linux系统中子进程意外退出时给父进程发送信号,该信号与所述特 定事件列表中的特定事件匹配,此时,将工作进程异常退出和启动新的工作进程加入到 待执行列表中。
S502、判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数 和io事件回调函数作为所述待执行事件添加至所述待执行队列中。
所述io事件成立条件为所述io事件加入到所述待执行队列的判断标准,参考步骤S100中的实例,所述特定事件成立条件为接收到与子进程通信的ipc文件描述符,此时, 将所述ipc文件描述符,io事件处理函数和io事件回调函数添加至所述待执行队列中。
实施例三
所述在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行 事件至待执行队列中的步骤还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立 条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中。
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
实施例四
所述检测与子进程交互的ipc文件描述符的方法为通过select方法或poll方法检测。
Select方法和poll方法是复用网络套接字的强大工具。采用这两个方法可以表明过程在什么时间可以安全地执行打开的文件描述符而没有任何延迟。比方说,程序员就 可以用这些函数调用得知某个套接字上何时有数据被读取。在给select方法和poll方 法指定任务之后你就不必经常性地检查套接字是否有数据要读取了。实际上,select方 法和poll方法还可以置于操作系统的后台运行,一旦满足特定事件或者时间超时就会被 唤醒。这个进程可以显著地增加程序的效率。Select方法和poll方法相比read方法, 提高了CPU的利用率。
实施例五
在所述注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表的 步骤之前,所述方法还包括:
根据所述工作进程的历史运行数据,确定所述特定事件。
在专有的工作进程运行时,所出现的特殊情况可以通过工作进程的历史运行数据归 纳总结将特定事件整理出,将特定事件和与所述特定事件对应的特定事件处理函数通过 列表的方式在特定事件列表中体现出来,以便当有相同的特定事件出现时,可以明确下一步操作。
本申请中,管理进程通过单线程管理多个工作进程,通过单线程管理可以确保简化 任务调度的复杂度和消灭死锁风险。不存在现有技术中多线程处理子进程请求的情况,简化了任务调度的复杂度,因为同一时间只有一个函数在执行,所以没有死锁风险。同 时,解决了现有技术中,管理进程启动多个线程进行进程间通信时会增加系统消耗的问 题。
根据上述实施例提供的一种串行化的多进程任务调度方法,本申请还提供一种串行 化的多进程任务调度装置。参阅图5,本申请实施例提供的一种串行化的多进程任务调度装置的结构示意图,所述装置包括:
特定事件列表注册模块U1:用于注册特定事件和与所述特定事件对应的特定事件处 理函数到特定事件列表;
工作进程启动模块U2:用于启动多项通过单线程管理的工作进程;
ipc文件描述符记录模块U3:用于与所述工作进程的子进程通信的ipc文件描述符;
io事件列表注册模块U4:用于注册io事件、与所述io事件对应的io事件处理函 数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;
待执行事件查找模块U5:用于在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
待执行事件执行模块U6:用于执行所述步骤S500中读取出的一个所述待执行事件, 返回所述步骤S500。
在一些实施例中,参阅图6,本申请实施例提供的另一种串行化的多进程任务调度装置的结构示意图。
所述待执行事件查找模块包括:
特定事件判断模块U51:用于判断所述特定事件列表是否存在满足所述特定事件成 立条件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件 处理函数作为所述待执行事件添加至所述待执行队列中;
io事件判断模块U52:用于判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数 和io事件回调函数作为所述待执行事件添加至所述待执行队列中。
在一些实施例中,所述待执行事件查找模块还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立 条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中。
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
在一些实施例中,所述检测与子进程交互的ipc文件描述符的方法为通过select方 法或poll方法检测。
在一些实施例中,所述特定事件列表注册模块之前,所述装置还包括:
特定事件确定模块:用于根据所述工作进程的历史运行数据,确定所述特定事件。
由以上技术可知,本申请提供了一种串行化的多进程任务调度方法和装置,其中,所述方法包括:S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定 事件列表;S200、启动多项通过单线程管理的工作进程;S300、记录与所述工作进程的 子进程通信的ipc文件描述符;S400、注册io事件、与所述io事件对应的io事件处理 函数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;S500、 在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待 执行队列中,读取一个所述待执行事件;S600、执行所述步骤S500中读取出的一个所述 待执行事件,返回所述步骤S500。本申请中,管理进程通过单线程管理多个工作进程, 通过单线程管理可以确保简化任务调度的复杂度和消灭死锁风险。不存在现有技术中多 线程处理子进程请求的情况,简化了任务调度的复杂度,因为同一时间只有一个函数在 执行,所以没有死锁风险。同时,解决了现有技术中,管理进程启动多个线程进行进程 间通信时会增加系统消耗的问题。
具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的用于Portal逃生的用户信息获取方法、认证 方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆 体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory, 简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通 用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说 对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存 储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的 某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于实施例而言, 由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说 明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。

Claims (6)

1.一种串行化的多进程任务调度方法,其特征在于,所述方法包括:
S100、注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表;
S200、启动多项通过单线程管理的工作进程;
S300、记录与所述工作进程的子进程通信的ipc文件描述符;
S400、注册io事件、与所述io事件对应的io事件处理函数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;
S500、在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
S600、执行所述步骤S500中读取出的一个所述待执行事件,返回所述步骤S500;
所述在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件的步骤包括:
S501、判断所述特定事件列表是否存在满足所述特定事件成立条件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件处理函数作为所述待执行事件添加至所述待执行队列中;
S502、判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数和io事件回调函数作为所述待执行事件添加至所述待执行队列中;
所述在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中的步骤还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中;
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
2.根据权利要求1所述的一种串行化的多进程任务调度方法,其特征在于,所述检测与子进程交互的ipc文件描述符的方法为通过select方法或poll方法检测。
3.根据权利要求1所述的一种串行化的多进程任务调度方法,其特征在于,在所述注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表的步骤之前,所述方法还包括:
根据所述工作进程的历史运行数据,确定所述特定事件。
4.一种串行化的多进程任务调度装置,其特征在于,所述装置包括:
特定事件列表注册模块:用于注册特定事件和与所述特定事件对应的特定事件处理函数到特定事件列表;
工作进程启动模块:用于启动多项通过单线程管理的工作进程;
ipc文件描述符记录模块:用于与所述工作进程的子进程通信的ipc文件描述符;
io事件列表注册模块:用于注册io事件、与所述io事件对应的io事件处理函数和io事件回调函数至io事件列表,其中,所述io事件为ipc文件描述符;
待执行事件查找模块:用于在所述特定事件列表和所述io事件列表中,查找待执行事件,添加所述待执行事件至待执行队列中,读取一个所述待执行事件;
待执行事件执行模块:用于执行所述步骤S500中读取出的一个所述待执行事件,返回所述步骤S500;
所述待执行事件查找模块包括:
特定事件判断模块:用于判断所述特定事件列表是否存在满足所述特定事件成立条件的特定事件;
如果存在满足所述特定事件成立条件的特定事件,则所述特定事件和所述特定事件处理函数作为所述待执行事件添加至所述待执行队列中;
io事件判断模块:用于判断所述io事件列表是否存在满足所述io事件成立条件的io事件;
如果存在满足所述io事件成立条件的io事件,则所述io事件、io事件处理函数和io事件回调函数作为所述待执行事件添加至所述待执行队列中;
所述待执行事件查找模块还包括:
如果不存在满足所述特定事件成立条件的特定事件,且不存在满足所述io事件成立条件的io事件,判断所述待执行队列是否为空;
当所述待执行队列为空时,检测与子进程交互的ipc文件描述符,将所述ipc文件描述符、io事件处理函数和io事件回调函数添加至所述待执行队列中;
当所述待执行队列为非空时,从所述待执行队列中读取待执行事件返回。
5.根据权利要求4所述的一种串行化的多进程任务调度装置,其特征在于,所述检测与子进程交互的ipc文件描述符的方法为通过select方法或poll方法检测。
6.根据权利要求4所述的一种串行化的多进程任务调度装置,其特征在于,所述特定事件列表注册模块之前,所述装置还包括:
特定事件确定模块:用于根据所述工作进程的历史运行数据,确定所述特定事件。
CN201810119531.0A 2018-02-06 2018-02-06 一种串行化的多进程任务调度方法和装置 Active CN108228330B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810119531.0A CN108228330B (zh) 2018-02-06 2018-02-06 一种串行化的多进程任务调度方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810119531.0A CN108228330B (zh) 2018-02-06 2018-02-06 一种串行化的多进程任务调度方法和装置

Publications (2)

Publication Number Publication Date
CN108228330A CN108228330A (zh) 2018-06-29
CN108228330B true CN108228330B (zh) 2022-03-04

Family

ID=62670478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810119531.0A Active CN108228330B (zh) 2018-02-06 2018-02-06 一种串行化的多进程任务调度方法和装置

Country Status (1)

Country Link
CN (1) CN108228330B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795092B (zh) * 2018-08-01 2023-05-02 中标软件有限公司 Docker执行Epoll系统调用的方法
CN109814998A (zh) * 2019-01-22 2019-05-28 中国联合网络通信集团有限公司 一种多进程任务调度的方法及装置
CN112379979A (zh) * 2020-10-27 2021-02-19 航天信息股份有限公司 一种应用于税控服务的线程超时监控方法
CN115601195B (zh) * 2022-10-17 2023-09-08 桂林电子科技大学 基于电力用户实时标签的交易双向推荐系统及其方法
CN115599563B (zh) * 2022-11-29 2023-06-13 北京卡普拉科技有限公司 串行i/o访问的并行i/o控制方法、装置及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101702735A (zh) * 2009-11-24 2010-05-05 恒生电子股份有限公司 一种tcp服务装置及方法
CN102455933A (zh) * 2010-10-22 2012-05-16 深圳市科陆电子科技股份有限公司 一种通过线程管理提高多任务处理效率的方法
CN103092682A (zh) * 2011-10-28 2013-05-08 浙江大华技术股份有限公司 异步网络应用程序处理方法
CN105515837A (zh) * 2015-11-27 2016-04-20 重庆邮电大学 一种基于事件驱动的高并发web流量产生器
CN105703940A (zh) * 2015-12-10 2016-06-22 中国电力科学研究院 一种面向多级调度分布式并行计算的监控系统及监控方法
CN106789308A (zh) * 2016-12-30 2017-05-31 北京超图软件股份有限公司 一种微服务架构可自动伸缩的gis服务装置及其控制方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
CN106293969B (zh) * 2016-08-09 2019-09-24 上海盈方微电子有限公司 Linux进程间通讯方法及装置、进程退出监听方法
CN106302554A (zh) * 2016-11-08 2017-01-04 郑州云海信息技术有限公司 一种socket通信方法、装置和存储设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101702735A (zh) * 2009-11-24 2010-05-05 恒生电子股份有限公司 一种tcp服务装置及方法
CN102455933A (zh) * 2010-10-22 2012-05-16 深圳市科陆电子科技股份有限公司 一种通过线程管理提高多任务处理效率的方法
CN103092682A (zh) * 2011-10-28 2013-05-08 浙江大华技术股份有限公司 异步网络应用程序处理方法
CN105515837A (zh) * 2015-11-27 2016-04-20 重庆邮电大学 一种基于事件驱动的高并发web流量产生器
CN105703940A (zh) * 2015-12-10 2016-06-22 中国电力科学研究院 一种面向多级调度分布式并行计算的监控系统及监控方法
CN106789308A (zh) * 2016-12-30 2017-05-31 北京超图软件股份有限公司 一种微服务架构可自动伸缩的gis服务装置及其控制方法

Also Published As

Publication number Publication date
CN108228330A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
CN108228330B (zh) 一种串行化的多进程任务调度方法和装置
US8739171B2 (en) High-throughput-computing in a hybrid computing environment
US8914805B2 (en) Rescheduling workload in a hybrid computing environment
US7900210B2 (en) Application connector parallelism in enterprise application integration systems
US8316376B2 (en) Optimizing workflow execution against a heterogeneous grid computing topology
US20130061220A1 (en) Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
US20080148300A1 (en) Providing Policy-Based Operating System Services in a Hypervisor on a Computing System
US20080195840A1 (en) Identifying Messaging Completion on a Parallel Computer
KR20040086214A (ko) 인핸스드 런타임 호스팅
US8516487B2 (en) Dynamic job relocation in a high performance computing system
US11656902B2 (en) Distributed container image construction scheduling system and method
EP4361808A1 (en) Resource scheduling method and device and computing node
US7921428B2 (en) Multi-registration of software library resources
CN111459622A (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
Sai et al. Producer-Consumer problem using Thread pool
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
CN111835809B (zh) 工单消息分配方法、装置、服务器及存储介质
Trahay et al. Improving reactivity and communication overlap in MPI using a generic I/O manager
Evers et al. A literature study on scheduling in distributed systems
US20210173712A1 (en) Method and supporting node for supporting process scheduling in a cloud system
CN114567520B (zh) 实现集合通信的方法、计算机设备和通信系统
Selvi et al. Scheduling In Virtualized Grid Environment Using Hybrid Approach
CN117827454A (zh) 任务处理方法及装置
Pandey et al. FuncMem: Reducing Cold Start Latency in Serverless Computing Through Memory Prediction and Adaptive Task Execution
CN118012568A (zh) 用于容器化应用管理的容器设备、系统及相关产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant