CN111538589B - 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 - Google Patents
嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 Download PDFInfo
- Publication number
- CN111538589B CN111538589B CN202010289594.8A CN202010289594A CN111538589B CN 111538589 B CN111538589 B CN 111538589B CN 202010289594 A CN202010289594 A CN 202010289594A CN 111538589 B CN111538589 B CN 111538589B
- Authority
- CN
- China
- Prior art keywords
- thread
- blocking queue
- node
- queue
- blocking
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种嵌入式OS线程阻塞队列的操作优化方法、装置、终端设备及存储介质,其中,该方法包括以下步骤:创建一个阻塞队列;当有线程需要进入该阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后;当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。每个TICK只需要遍历有超时时间的线程节点,大大提高了遍历效率,并且不需要额外增加一个队列,减少RAM使用。
Description
技术领域
本发明涉及嵌入式OS领域,具体地涉及一种嵌入式OS线程阻塞队列的操作优化方法、装置、终端设备及存储介质。
背景技术
在嵌入式OS中,操作系统每个TICK都需要遍历线程阻塞队列,以唤醒阻塞超时线程。一般OS中线程进入阻塞队列有两种做法的:1.建立一个阻塞队列(QUE),阻塞线程从对尾部追加,操作系统每个TICK则遍历整个阻塞队列。2.建立两个队列,一个用于有超时时间的阻塞队列(TMO_QUE),一个用于永久阻塞等待事件的队列(FOREVER_QUE),操作系统每个TICK则只需要遍历TMO_QUE。对于第一种方法当阻塞线程数目比较多时,每个TICK中断需要耗时比较多。对于第二种方法则需要多增加一个阻塞队列,增加RAM的使用量并且不利于操作。
发明内容
本发明旨在提供一种嵌入式OS线程阻塞队列的操作优化方法,以解决上述问题。为此,本发明采用的具体技术方案如下:
根据本发明的一方面,提供了一种嵌入式OS线程阻塞队列的操作优化方法,包括以下步骤:
创建一个阻塞队列;
当有线程需要进入该阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后;
当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。
根据本发明的另一方面,提供了一种嵌入式OS线程阻塞队列的操作优化装置,包括:
队列创建模块,所述队列创建模块用于创建一个阻塞队列;
线程插入模块,所述线程插入模块用于执行功能:当有线程需要进入该阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后。
遍历模块,所述遍历模块用于执行功能:当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。
根据本发明的另一方面,还提供了一种具有嵌入式OS的终端设备,其包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述的方法的步骤。
根据本发明的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本发明采用上述技术方案,具有的有益效果是:每个TICK只需要遍历有超时时间的线程节点,大大提高了遍历效率,并且不需要额外增加一个队列,减少RAM使用。
附图说明
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
图1是本发明的一种嵌入式OS线程阻塞队列的操作优化方法的示意图;
图2a和2b分别是本发明的阻塞队列的两种线程插入方式的示意图;
图3是本发明的一种嵌入式OS线程阻塞队列的操作优化装置的方框图。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
如图1、2a和2b所示,根据本发明的一方面,一种嵌入式OS线程阻塞队列的操作优化方法,其包括以下步骤:
S1:创建一个阻塞队列,假设现有阻塞队列包括队列头及N个节点;
S2:当有线程需要进入该阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点(节点1)之前,如图2a所示,若无,则将该线程插入到该阻塞队列的最后一个节点(节点N)之后,即按现有技术的线程插入方式插入,如图2b所示;这样有超时时间的线程节点都会在永久阻塞等待事件线程节点(即,无超时时间的线程节点)的前面;
S3:当执行TICK时,从该阻塞队列的第一个线程节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。由于在每个TICK对阻塞队列的操作时并不需要遍历整个阻塞队列,而是遍历到第一个永久阻塞等待事件线程节点时就可以提前中断遍历,因此大大提高了遍历效率。更具体地说,如图2a和2b所示,现有阻塞队列有N+1个线程节点,其中有M个有超时时间的线程节点,若采用现有技术,则每个TICK需要遍历N+1次,而采用本发明方法,每个TICK仅需遍历M次,由于M通常比N小得多,所以遍历次数大大减少了,相应地遍历效率大大提高了。
本发明的嵌入式OS线程阻塞队列的操作优化方法的一个具体程序代码如下:
如图3所示,根据本发明的一方面,一种嵌入式OS线程阻塞队列的操作优化装置,其包括:
队列创建模块100,所述队列创建模块100用于创建一个阻塞队列;
线程插入模块200,所述线程插入模块用于执行功能:当有线程需要进入阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后,即按原来的插入方式插入;
遍历模块300,所述遍历模块用于执行功能:当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。
此外,本发明还提供了一种具有嵌入式OS的终端设备,可包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现上述方法实施例中的步骤,例如图1所示的步骤S1-S3等方法步骤,或者所述处理器执行所述计算机程序时实现上述装置实施例中各模块/单元的功能,例如队列创建模块100、线程插入模块200和遍历模块300等。
示例性地,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。
终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括但不仅限于,处理器、存储器。例如其还可以包括输入输出设备、网络接入设备、总线等。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的方法的步骤,例如图1所示的步骤S1-S3等方法步骤。
计算机程序的各个模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (4)
1.一种嵌入式OS线程阻塞队列的操作优化方法,其特征在于,包括以下步骤:
创建一个阻塞队列;
当有线程需要进入该阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后;
当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。
2.一种嵌入式OS线程阻塞队列的操作优化装置,其特征在于,包括:
队列创建模块,所述队列创建模块用于创建一个阻塞队列;
线程插入模块,所述线程插入模块用于执行功能:当有线程需要进入阻塞队列时,首先判断该线程阻塞是否有超时时间,若有,则将该线程插入到该阻塞队列的第一个节点之前,若无,则将该线程插入到该阻塞队列的最后一个节点之后;
遍历模块,所述遍历模块用于执行功能:当执行TICK时,从阻塞队列的第一个节点开始遍历,当遍历到第一个永久阻塞等待事件线程节点时中断遍历。
3.一种具有嵌入式OS的终端设备,其包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1所述的方法的步骤。
4.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010289594.8A CN111538589B (zh) | 2020-04-14 | 2020-04-14 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010289594.8A CN111538589B (zh) | 2020-04-14 | 2020-04-14 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538589A CN111538589A (zh) | 2020-08-14 |
CN111538589B true CN111538589B (zh) | 2023-05-05 |
Family
ID=71977409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010289594.8A Active CN111538589B (zh) | 2020-04-14 | 2020-04-14 | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538589B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948224A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 客户端请求的超时处理方法和装置 |
CN108710531A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市文鼎创数据科技有限公司 | 循环队列的数据写入方法、装置、终端设备和存储介质 |
CN110297722A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
-
2020
- 2020-04-14 CN CN202010289594.8A patent/CN111538589B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948224A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 客户端请求的超时处理方法和装置 |
CN108710531A (zh) * | 2018-04-20 | 2018-10-26 | 深圳市文鼎创数据科技有限公司 | 循环队列的数据写入方法、装置、终端设备和存储介质 |
CN110297722A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 线程任务通信方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111538589A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11340803B2 (en) | Method for configuring resources, electronic device and computer program product | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
CN113300883B (zh) | 协议信息生成方法、装置和终端设备 | |
US11615607B2 (en) | Convolution calculation method, convolution calculation apparatus, and terminal device | |
CN108810832B (zh) | 短信下发方法、装置与计算机可读存储介质 | |
WO2022082892A1 (zh) | 大数据分析方法、系统、计算机设备及其存储介质 | |
CN110569038B (zh) | 随机验证参数设计方法、装置、计算机设备及存储介质 | |
CN111538589B (zh) | 嵌入式os线程阻塞队列的操作优化方法、装置、终端及介质 | |
CN108205503B (zh) | 硬件驱动兼容方法及终端 | |
CN111625180B (zh) | 数据写入方法及装置、存储介质 | |
US10114853B2 (en) | Optimizing the initialization of a queue via a batch operation | |
CN115686789A (zh) | 一种离散事件并行处理方法、终端设备及存储介质 | |
CN108322542B (zh) | 数据更新方法、系统、装置以及计算机可读存储介质 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN111258733B (zh) | 一种嵌入式os任务调度方法、装置、终端设备及存储介质 | |
CN111966472B (zh) | 一种工业实时操作系统的进程调度方法及系统 | |
CN112148470B (zh) | 参数同步方法、计算机装置及可读存储介质 | |
CN113873026A (zh) | 动态超时响应方法、装置、终端设备及存储介质 | |
CN111090633A (zh) | 一种分布式文件系统的小文件聚合方法、装置及设备 | |
CN114238213A (zh) | 多线程文件解析方法及装置 | |
US11677902B2 (en) | Data processing method and related product | |
CN111091488B (zh) | 基于OpenCV的内存管理方法、装置及终端 | |
CN117422024B (zh) | 数据位宽转换方法、装置、计算机设备及介质 | |
CN111773714B (zh) | 游戏技能配置方法与装置及游戏技能控制方法与装置 | |
CN112600760B (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 |