CN111475300A - 一种多线程多任务管理方法及终端 - Google Patents

一种多线程多任务管理方法及终端 Download PDF

Info

Publication number
CN111475300A
CN111475300A CN202010273037.7A CN202010273037A CN111475300A CN 111475300 A CN111475300 A CN 111475300A CN 202010273037 A CN202010273037 A CN 202010273037A CN 111475300 A CN111475300 A CN 111475300A
Authority
CN
China
Prior art keywords
task
queue
task queue
executing
thread
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
CN202010273037.7A
Other languages
English (en)
Other versions
CN111475300B (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.)
Jiangsu Shenghai Intelligent Technology Co ltd
Original Assignee
Jiangsu Shenghai Intelligent Technology 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 Jiangsu Shenghai Intelligent Technology Co ltd filed Critical Jiangsu Shenghai Intelligent Technology Co ltd
Priority to CN202010273037.7A priority Critical patent/CN111475300B/zh
Publication of CN111475300A publication Critical patent/CN111475300A/zh
Application granted granted Critical
Publication of CN111475300B publication Critical patent/CN111475300B/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本发明公开了一种多线程多任务的管理方法及终端,根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;为每个任务队列建立对应的任务队列指针以存放所述任务队列;接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应;线程的初始状态为阻塞,能够快速对任务进行响应;采用任务ID进行标识,方便任务的写入和读取,进一步提高了任务的处理效率,保证了数据的时效性和无人驾驶操作的即时性,确保车辆的安全。

Description

一种多线程多任务管理方法及终端
技术领域
本发明涉及线程管理领域,尤其涉及一种多线程多任务管理方法及终端。
背景技术
无人驾驶系统对数据的实时性要求较高,而现有的无人驾驶系统大多为嵌入式系统,其性能和可使用资源都具有局限性,无法给线程管理分配较多资源,现有对多线程的管理大都采用线程池的方法,但在无人驾驶系统中,线程的总数较少,采用线程池的方式对多线程进行管理会造成系统资源的浪费,同时也延长了系统的响应时间。
发明内容
本发明所要解决的技术问题是:提供一种多线程多任务管理方法及终端,提高无人驾驶系统中应用程序的运行速度,保证数据的时效性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种多线程多任务管理方法,包括步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种多线程多任务管理终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
本发明的有益效果在于:根据任务个数创建对应个数的任务线程,并为每个任务线程创建对应的任务队列,将任务队列存放至对应的任务队列指针中,同时设置任务线程的初始状态为阻塞状态,根据任务队列指针获取对应的任务队列,并基于对应的任务队列的状态来响应任务处理请求,一方面使得各个任务都明确化,所有任务线程都处于时刻准备执行的状态,提高了数据响应的高效性,另一方面为每个任务线程都创建其对应的任务队列,并通过指针方便实现数据读取和写入,避免了因互斥造成线程等待资源的情况,进一步加速了任务的处理速度,同时使无任务的线程都处于阻塞状态,占用了较少的资源,节省了线程状态改变的时间,进一步提高了处理任务的效率,提高了无人驾驶系统中应用程序的运行速度,保证数据的时效性。
附图说明
图1为本发明实施例的一种多线程多任务管理方法的步骤流程图;
图2为本发明实施例的一种多线程多任务管理终端的结构示意图;
图3为本发明实施例的任务队列结构示意图;
图4为本发明实施例的一种多线程多任务管理方法的总流程示意图;
图5为本发明实施例的任务队列创建过程示意图;
图6为本发明实施例的任务写入过程示意图;
图7为本发明实施例的任务读取过程示意图;
标号说明:
1、一种多线程多任务管理终端;2、处理器;3、存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,一种多线程多任务管理方法,包括步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
从上述描述可知,本发明的有益效果在于:根据任务个数创建对应个数的任务线程,并为每个任务线程创建对应的任务队列,将任务队列存放至对应的任务队列指针中,同时设置任务线程的初始状态为阻塞状态,根据任务队列指针获取对应的任务队列,并基于对应的任务队列的状态来响应任务处理请求,一方面使得各个任务都明确化,所有任务线程都处于时刻准备执行的状态,提高了数据响应的高效性,另一方面为每个任务线程都创建其对应的任务队列,并通过指针方便实现数据读取和写入,避免了因互斥造成线程等待资源的情况,进一步加速了任务的处理速度,同时使无任务的线程都处于阻塞状态,占用了较少的资源,节省了线程状态改变的时间,进一步提高了处理任务的效率,提高了无人驾驶系统中应用程序的运行速度,保证数据的时效性。
进一步的,所述S1中为每个任务线程创建对应的任务队列具体为:
S11、给每个任务线程分配对应的任务ID,所述任务ID为大于0的整数且不同的任务线程对应的任务ID互不相同;
S12、获取要创建任务队列的任务线程对应的任务ID,判断所述任务ID是否处于预设范围内,若是,则执行步骤S13,若否,则结束此次过程;
S13、根据所述任务ID,创建对应的任务队列,并为所述任务队列分配队列空间,初始化线程锁及读写队列的条件。
由上述描述可知,采用任务ID对不同的任务线程和其对应的任务队列进行区分和标记,便于读写任务,以任务ID的阈值对线程数量进行控制,防止系统资源过载,为每一任务队列配备线程锁,保护读写操作互不干扰。
进一步的,所述步骤S2还包括:
创建任务指针数组,将每个任务队列对应的任务队列指针存入所述任务指针数组。
由上述描述可知,创建任务指针数组存储每个任务队列对应的任务队列指针,方便在不同场景下调用任务队列,能够快速完成响应且不易出错。
进一步的,所述步骤S3包括:
S311、接收任务写入请求,根据所述任务写入请求中获取对应的任务ID;
S312、判断所述任务ID是否在预设范围内,若是,执行S313,否则发送写入失败提示;
S313、根据所述任务ID,确定其对应的任务队列指针;
S314、通过所述任务队列指针,确定任务队列并对其线程锁上锁,判断所述任务队列中是否还有剩余空间,若是,则执行S316,否则,执行S315;
S315、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可写入信号时执行所述S316;
S316、写入所述任务写入请求中的任务,发送任务可读取信号并解除所述任务队列的线程锁。
由上述描述可知,在任务写入过程中,以任务ID为标识,查找对应的任务队列指针,进而确定对应的任务队列,保证将任务准确写入对应的任务队列中,在执行写入操作时设置线程锁,保护写入操作不被外部因素影响,保证写入内容的正确和完整;写入操作不能及时进行时,挂起等待写入信号,保证了写入的效率。
进一步的,所述步骤S3包括:
S321、接收任务读取请求,根据所述任务写入请求中获取对应的任务ID;
S322、判断所述任务ID是否在预设范围内,若是,则执行步骤S323,否则,发送读取失败提示;
S323、根据所述任务ID,确定对应的任务队列指针;
S324、通过所述任务队列指针,确定对应的任务队列并对其线程锁上锁,判断所述任务队列中是否有写入的任务,若是,则执行步骤S326,否则,执行步骤S325;
S325、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可读取信号时执行所述步骤S326;
S326、读取所述任务读取请求中的任务,并释放所读取的任务的空间,发送任务可写入信号并解除所述任务队列的线程锁。
由上述描述可知,任务线程以任务ID为标识读取对应的任务队列中被写入的任务,任务线程与任务队列一一对应,线程获取资源时不需要互相等待,加快了任务的处理过程,在读取任务的过程中,为任务队列加上线程锁,保证了读取过程的稳定。
请参照图2,一种多线程多任务管理终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
本发明的有益效果在于:根据任务个数创建对应个数的任务线程,并为每个任务线程创建对应的任务队列,将任务队列存放至对应的任务队列指针中,同时设置任务线程的初始状态为阻塞状态,根据任务队列指针获取对应的任务队列,并基于对应的任务队列的状态来响应任务处理请求,一方面使得各个任务都明确化,所有任务线程都处于时刻准备执行的状态,提高了数据响应的高效性,另一方面为每个任务线程都创建其对应的任务队列,并通过指针方便实现数据读取和写入,避免了因互斥造成线程等待资源的情况,进一步加速了任务的处理速度,同时使无任务的线程都处于阻塞状态,占用了较少的资源,节省了线程状态改变的时间,进一步提高了处理任务的效率,提高了无人驾驶系统中应用程序的运行速度,保证数据的时效性。
进一步的,所述S1中为每个任务线程创建对应的任务队列具体为:
S11、给每个任务线程分配对应的任务ID,所述任务ID为大于0的整数且不同的任务线程对应的任务ID互不相同;
S12、获取要创建任务队列的任务线程对应的任务ID,判断所述任务ID是否处于预设范围内,若是,则执行步骤S13,若否,则结束此次过程;
S13、根据所述任务ID,创建对应的任务队列,并为所述任务队列分配队列空间,初始化线程锁及读写队列的条件。
由上述描述可知,采用任务ID对不同的任务线程和其对应的任务队列进行区分和标记,便于读写任务,以任务ID的阈值对线程数量进行控制,防止系统资源过载,为每一任务队列配备线程锁,保护读写操作互不干扰。
进一步的,所述步骤S2还包括:
创建任务指针数组,将每个任务队列对应的任务队列指针存入所述任务指针数组。
由上述描述可知,创建任务指针数组存储每个任务队列对应的任务队列指针,方便在不同场景下调用任务队列,能够快速完成响应且不易出错。
进一步的,所述步骤S3包括:
S311、接收任务写入请求,根据所述任务写入请求中获取对应的任务ID;
S312、判断所述任务ID是否在预设范围内,若是,执行S313,否则发送写入失败提示;
S313、根据所述任务ID,确定其对应的任务队列指针;
S314、通过所述任务队列指针,确定任务队列并对其线程锁上锁,判断所述任务队列中是否还有剩余空间,若是,则执行S316,否则,执行S315;
S315、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可写入信号时执行所述S316;
S316、写入所述任务写入请求中的任务,发送任务可读取信号并解除所述任务队列的线程锁。
由上述描述可知,在任务写入过程中,以任务ID为标识,查找对应的任务队列指针,进而确定对应的任务队列,保证将任务准确写入对应的任务队列中,在执行写入操作时设置线程锁,保护写入操作不被外部因素影响,保证写入内容的正确和完整;写入操作不能及时进行时,挂起等待写入信号,保证了写入的效率。
进一步的,所述步骤S3包括:
S321、接收任务读取请求,根据所述任务写入请求中获取对应的任务ID;
S322、判断所述任务ID是否在预设范围内,若是,则执行步骤S323,否则,发送读取失败提示;
S323、根据所述任务ID,确定对应的任务队列指针;
S324、通过所述任务队列指针,确定对应的任务队列并对其线程锁上锁,判断所述任务队列中是否有写入的任务,若是,则执行步骤S326,否则,执行步骤S325;
S325、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可读取信号时执行所述步骤S326;
S326、读取所述任务读取请求中的任务,并释放所读取的任务的空间,发送任务可写入信号并解除所述任务队列的线程锁。
由上述描述可知,任务线程以任务ID为标识读取对应的任务队列中被写入的任务,任务线程与任务队列一一对应,线程获取资源时不需要互相等待,加快了任务的处理过程,在读取任务的过程中,为任务队列加上线程锁,保证了读取过程的稳定。
请参照图1、图3及图4,本发明的实施例一为:
一种多线程多任务管理方法,具体包括:
S1、请参照图4,根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
具体的,根据无人驾驶车辆启动时产生的任务个数,创建对应个数的任务线程,之后不再创建新任务线程;
请参照图5,其中,为每个任务线程创建对应的任务队列具体为:
S11、给每个任务线程分配对应的任务ID,所述任务ID为大于0的整数且不同的任务线程对应的任务ID互不相同;
S12、获取要创建任务队列的任务线程对应的任务ID,判断所述任务ID是否处于预设范围内,若是,则执行步骤S13,若否,则结束此次过程;
S13、根据所述任务ID,创建对应的任务队列,并为所述任务队列分配队列空间,初始化线程锁及读写队列的条件;
例如给转向任务的线程分配任务ID1234,则其对应的任务队列ID也为1234,若产生转向任务,则自动分配任务ID1234;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
创建任务队列具体为:
Figure BDA0002443797210000081
还包括:
创建任务指针数组,将每个任务队列对应的任务队列指针存入所述任务指针数组;
优选的,S1中创建任务线程前,根据任务个数给任务指针数组分配空间,并初始化任务下发和接收的句柄,以供使用;
具体的,创建msg_quehndl*hndl_list[MAX_QUE]任务指针数组,其中,MAX_QUE为最大存放数,即任务ID的阈值。
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应;
优选的,为每个任务设置优先级属性,TASK_LEVEL1~5,TASK_LEVEL1的优先级最高,TASK_LEVEL5的优先级最低,默认任务的优先级属性为TASK_LEVEL4,紧急制动任务的优先级最高,为TASK_LEVEL1,熄火任务为TASK_LEVEL2,点火任务为TASK_LEVEL3,转向、油门等任务为TASK_LEVEL4;
任务在任务队列中默认按照任务生成时间从前到后存储,在任务指针数组中,按照任务优先等级存储相应任务队列,优先等级高的任务存储在前,若接收的任务处理请求为TASK_LEVEL1任务,则清空其他所有任务队列。
请参照图5及图6,本发明的实施例二为:
一种多线程多任务管理方法,其与实施例一的不同之处在于,所述任务处理请求包括任务写入请求和任务读取请求,若是任务写入请求,则如图5所示,所述步骤S3包括:
S311、接收任务写入请求,根据所述任务写入请求中获取对应的任务ID;
S312、判断所述任务ID是否在预设范围内,若是,执行S313,否则发送写入失败提示;
S313、根据所述任务ID,确定其对应的任务队列指针;
具体的,以所述任务ID为标识,从任务指针数组中取出对应ID的任务队列指针;
S314、通过所述任务队列指针,确定任务队列并对其线程锁上锁,判断所述任务队列中是否还有剩余空间,若是,则执行S316,否则,执行S315;
S315、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可写入信号时执行所述S316;
S316、写入所述任务写入请求中的任务,发送任务可读取信号并解除所述任务队列的线程锁;
优选的,采用Int task_queput(int task_id,unsigned int cmd,int level,intlen,void*data,unsigned int timeout)接口执行所述任务写入请求,其中,task_id用于标识任务ID,cmd用于标识任务名称,level用于标识任务等级,len是任务数据长度,data是任务数据,timeout标识等待时间。在该接口中会根据task_id找到相应的任务队列,再根据level确定任务在任务队列中存放相应的位置,主线程在接收到任务消息后,对任务消息解析,然后再根据消息的属性,通过该接口往任务对列中写入任务;
若为任务读取请求,则如图6所示,所述步骤S3包括:
S321、接收任务读取请求,根据所述任务写入请求中获取对应的任务ID;
S322、判断所述任务ID是否在预设范围内,若是,则执行步骤S323,否则,发送读取失败提示;
S323、根据所述任务ID,确定对应的任务队列指针;
具体的,以所述任务ID为标识,从任务指针数组中取出对应ID的任务队列指针;
S324、通过所述任务队列指针,确定对应的任务队列并对其线程锁上锁,判断所述任务队列中是否有写入的任务,若是,则执行步骤S326,否则,执行步骤S325;
S325、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可读取信号时执行所述步骤S326;
S326、读取所述任务读取请求中的任务,并释放所读取的任务的空间,发送任务可写入信号并解除所述任务队列的线程锁;
优选的,采用接口int task_queget(int que_id,unsigned int*pcmd,int*plen,void*data,unsigned int timeout)执行任务读取请求,任务线程通过该接口读取任务队列中的任务并执行,具体的,根据que_id确定任务队列,读取其中存储的任务,然后执行所述任务队列中存储的任务,当任务队列为空时,任务线程可根据接口中timeout的值等待相应的时间,或者阻塞挂起等待任务,直至被条件变量唤醒。
请参照图2,本发明的实施例三为:
一种多线程多任务管理终端1,所述终端1包括处理器2、存储器3及存储在存储器3上并可在所述处理器2上运行的计算机程序,所述处理器2执行所述计算机程序时实现实施例一或实施例二中的各个步骤。
综上所述,本发明提供了一种多线程多任务管理方法及终端,在无人驾驶系统中,根据车辆启动时任务的个数创建对应个数的任务线程,保证能够最快速度响应任务,并且给每个任务线程都创建对应的任务队列,避免了不同线程读取同一队列资源需要互相等待造成任务响应时间延长的问题,任务响应的高效率保证了无人驾驶系统的安全性;任务线程的初始状态为阻塞,能够快速对任务进行响应;采用任务ID对任务线程及其对应的任务队列进行标识,使每个任务线程只能与其对应的任务队列连接,避免了资源使用的混乱,同时方便了任务的写入和读取操作,进一步提升了任务处理的速度;创建任务指针数组,将所有任务队列对应的任务队列指针统一存储,加快了定位任务队列的过程;对任务进行分级,优先处理高优先级的任务,确保了无人驾驶的安全性,并且在接收到TASK_LEVEL1优先级别的任务时,将任务队列中的其他任务删除,确保紧急制动之后车辆不再进行其他操作,保证车内人员的安全;在保证数据时效性和提高任务处理效率的同时保证了安全性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种多线程多任务管理方法,其特征在于,包括步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
2.根据权利要求1所述的一种多线程多任务管理方法,其特征在于,所述S1中为每个任务线程创建对应的任务队列具体为:
S11、给每个任务线程分配对应的任务ID,所述任务ID为大于0的整数且不同的任务线程对应的任务ID互不相同;
S12、获取要创建任务队列的任务线程对应的任务ID,判断所述任务ID是否处于预设范围内,若是,则执行步骤S13,若否,则结束此次过程;
S13、根据所述任务ID,创建对应的任务队列,并为所述任务队列分配队列空间,初始化线程锁及读写队列的条件。
3.根据权利要求1所述的一种多线程多任务管理方法,其特征在于,所述步骤S2还包括:
创建任务指针数组,将每个任务队列对应的任务队列指针存入所述任务指针数组。
4.根据权利要求2所述的一种多线程多任务管理方法,其特征在在于,所述步骤S3包括:
S311、接收任务写入请求,根据所述任务写入请求中获取对应的任务ID;
S312、判断所述任务ID是否在预设范围内,若是,执行S313,否则发送写入失败提示;
S313、根据所述任务ID,确定其对应的任务队列指针;
S314、通过所述任务队列指针,确定任务队列并对其线程锁上锁,判断所述任务队列中是否还有剩余空间,若是,则执行S316,否则,执行S315;
S315、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可写入信号时执行所述S316;
S316、写入所述任务写入请求中的任务,发送任务可读取信号并解除所述任务队列的线程锁。
5.根据权利要求2所述的一种多线程多任务管理方法,其特征在于,所述步骤S3包括:
S321、接收任务读取请求,根据所述任务写入请求中获取对应的任务ID;
S322、判断所述任务ID是否在预设范围内,若是,则执行步骤S323,否则,发送读取失败提示;
S323、根据所述任务ID,确定对应的任务队列指针;
S324、通过所述任务队列指针,确定对应的任务队列并对其线程锁上锁,判断所述任务队列中是否有写入的任务,若是,则执行步骤S326,否则,执行步骤S325;
S325、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可读取信号时执行所述步骤S326;
S326、读取所述任务读取请求中的任务,并释放所读取的任务的空间,发送任务可写入信号并解除所述任务队列的线程锁。
6.一种多线程多任务管理终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
S1、根据任务个数创建对应个数的任务线程,初始状态为阻塞,并为每个任务线程创建对应的任务队列;
S2、为每个任务队列建立对应的任务队列指针以存放所述任务队列;
S3、接收任务处理请求,根据所述任务处理请求中的任务标识确定对应的任务队列指针以获取对应的任务队列,根据所获取的对应的任务队列的状态对所述任务处理请求进行响应。
7.根据权利要求6所述的一种多线程多任务管理终端,其特征在于,所述S1中为每个任务线程创建对应的任务队列具体为:
S11、给每个任务线程分配对应的任务ID,所述任务ID为大于0的整数且不同的任务线程对应的任务ID互不相同;
S12、获取要创建任务队列的任务线程对应的任务ID,判断所述任务ID是否处于预设范围内,若是,则执行步骤S13,若否,则结束此次过程;
S13、根据所述任务ID,创建对应的任务队列,并为所述任务队列分配队列空间,初始化线程锁及读写队列的条件。
8.根据权利要求6所述的一种多线程多任务管理终端,其特征在于,所述步骤S2还包括:
创建任务指针数组,将每个任务队列对应的任务队列指针存入所述任务指针数组。
9.根据权利要求7所述的一种多线程多任务管理终端,其特征在在于,所述步骤S3包括:
S311、接收任务写入请求,根据所述任务写入请求中获取对应的任务ID;
S312、判断所述任务ID是否在预设范围内,若是,执行S313,否则发送写入失败提示;
S313、根据所述任务ID,确定其对应的任务队列指针;
S314、通过所述任务队列指针,确定任务队列并对其线程锁上锁,判断所述任务队列中是否还有剩余空间,若是,则执行S316,否则,执行S315;
S315、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可写入信号时执行所述S316;
S316、写入所述任务写入请求中的任务,发送任务可读取信号并解除所述任务队列的线程锁。
10.根据权利要求7所述的一种多线程多任务管理终端,其特征在于,所述步骤S3包括:
S321、接收任务读取请求,根据所述任务写入请求中获取对应的任务ID;
S322、判断所述任务ID是否在预设范围内,若是,则执行步骤S323,否则,发送读取失败提示;
S323、根据所述任务ID,确定对应的任务队列指针;
S324、通过所述任务队列指针,确定对应的任务队列并对其线程锁上锁,判断所述任务队列中是否有写入的任务,若是,则执行步骤S326,否则,执行步骤S325;
S325、解除所述任务队列的线程锁,并进入等待状态,当接收到任务可读取信号时执行所述步骤S326;
S326、读取所述任务读取请求中的任务,并释放所读取的任务的空间,发送任务可写入信号并解除所述任务队列的线程锁。
CN202010273037.7A 2020-04-09 2020-04-09 一种多线程多任务管理方法及终端 Active CN111475300B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010273037.7A CN111475300B (zh) 2020-04-09 2020-04-09 一种多线程多任务管理方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010273037.7A CN111475300B (zh) 2020-04-09 2020-04-09 一种多线程多任务管理方法及终端

Publications (2)

Publication Number Publication Date
CN111475300A true CN111475300A (zh) 2020-07-31
CN111475300B CN111475300B (zh) 2023-06-23

Family

ID=71751351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010273037.7A Active CN111475300B (zh) 2020-04-09 2020-04-09 一种多线程多任务管理方法及终端

Country Status (1)

Country Link
CN (1) CN111475300B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113176896A (zh) * 2021-03-19 2021-07-27 中盈优创资讯科技有限公司 一种基于单进单出无锁队列的随机取出对象的方法
CN114253714A (zh) * 2021-12-07 2022-03-29 四川新网银行股份有限公司 一种基于阻塞队列的多线程数据处理的方法、系统及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893126A (zh) * 2016-03-29 2016-08-24 华为技术有限公司 一种任务调度方法及装置
CN107301087A (zh) * 2017-06-28 2017-10-27 郑州云海信息技术有限公司 一种多线程系统的性能提升方法和装置
CN108121792A (zh) * 2017-12-20 2018-06-05 第四范式(北京)技术有限公司 基于任务并行处理数据流的方法、装置、设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893126A (zh) * 2016-03-29 2016-08-24 华为技术有限公司 一种任务调度方法及装置
CN107301087A (zh) * 2017-06-28 2017-10-27 郑州云海信息技术有限公司 一种多线程系统的性能提升方法和装置
CN108121792A (zh) * 2017-12-20 2018-06-05 第四范式(北京)技术有限公司 基于任务并行处理数据流的方法、装置、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113176896A (zh) * 2021-03-19 2021-07-27 中盈优创资讯科技有限公司 一种基于单进单出无锁队列的随机取出对象的方法
CN114253714A (zh) * 2021-12-07 2022-03-29 四川新网银行股份有限公司 一种基于阻塞队列的多线程数据处理的方法、系统及设备
CN114253714B (zh) * 2021-12-07 2024-04-12 四川新网银行股份有限公司 一种基于阻塞队列的多线程数据处理的方法、系统及设备

Also Published As

Publication number Publication date
CN111475300B (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US8145817B2 (en) Reader/writer lock with reduced cache contention
US7392525B2 (en) Inter-thread long jumps in a multithreaded environment
KR100463235B1 (ko) 자원관리를위한컴퓨터구현방법,컴퓨터판독가능매체및컴퓨터시스템
US6904483B2 (en) System and method for priority inheritance
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
US6560627B1 (en) Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US11132294B2 (en) Real-time replicating garbage collection
US8412894B2 (en) Value recycling facility for multithreaded computations
US6253225B1 (en) Process executing method and resource accessing method in computer system
US20020133530A1 (en) Method for resource control including resource stealing
CN111767159A (zh) 一种基于协程的异步系统调用系统
US8141076B2 (en) Cell processor methods and apparatus
US8769546B2 (en) Busy-wait time for threads
US20200409841A1 (en) Multi-threaded pause-less replicating garbage collection
US8578105B2 (en) Using type stability to facilitate contention management
US5138713A (en) Multiprocessing computer system with exit logic and method for maintaining resource integrity
CN111475300A (zh) 一种多线程多任务管理方法及终端
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
US6976260B1 (en) Method and apparatus for serializing a message queue in a multiprocessing environment
US8682914B2 (en) Method and system for robust futexes
CN111831436A (zh) Io请求的调度方法、装置、存储介质及电子设备
WO2022194162A1 (zh) 用于处理中断请求的方法和装置
CN116756380A (zh) 环形单链表的处理方法和装置
CN117453413A (zh) 资源申请方法、装置、电子设备以及存储介质
CN114691376A (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