CN112559160B - 地图引擎多线程的控制方法及装置 - Google Patents
地图引擎多线程的控制方法及装置 Download PDFInfo
- Publication number
- CN112559160B CN112559160B CN202110188382.5A CN202110188382A CN112559160B CN 112559160 B CN112559160 B CN 112559160B CN 202110188382 A CN202110188382 A CN 202110188382A CN 112559160 B CN112559160 B CN 112559160B
- Authority
- CN
- China
- Prior art keywords
- thread
- auxiliary
- auxiliary thread
- preset
- sleep state
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
Abstract
本申请是关于一种地图引擎多线程的控制方法及装置。该方法包括:地图引擎中的主线程向辅线程发送任务通知,所述任务通知中包括所述辅线程的预设标志;在所述辅线程的预设标志为第一标志值的信息的情况下,启动相应任务;所述辅线程完成所述任务后,向所述主线程发送预设标志为第二标志值的信息,并使所述辅线程进入睡眠状态;在所述辅线程的睡眠状态符合预设条件的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态。本申请提供的方案,能够降低地图引擎对系统资源的消耗,提高地图引擎的处理速度。
Description
技术领域
本申请涉及导航技术领域,尤其涉及一种地图引擎多线程的控制方法及装置。
背景技术
地图引擎是一个多线程系统,由于多个线程中各个线程处理任务需要的时间不相同,一个线程已经处理完任务,另一个线程还在处理任务过程中,导致在多个线程同步时,容易发生安全问题。为避免发生安全问题,相关技术的地图引擎在等待其它线程处理完任务后,再实现多线程的同步。而完成任务处理的辅线程在等待时不释放占用的系统资源,因此,消耗了较多的系统资源,降低了地图引擎的处理速度。
因此,相关技术地图引擎的多线程处理任务时无法同步,而为保持多线程的同步,又消耗较多的系统资源,降低了地图引擎的处理速度。
发明内容
为克服相关技术中存在的问题,本申请提供一种地图引擎多线程的控制方法及装置,能够降低地图引擎对系统资源的消耗,提高地图引擎的处理速度。
本申请第一方面提供一种地图引擎多线程的控制方法,所述方法包括:
地图引擎中的主线程向辅线程发送任务通知,所述任务通知中包括所述辅线程的预设标志为第一标志值的信息;
在所述辅线程的预设标志为第一标志值的信息的情况下,启动相应任务;
所述辅线程完成所述任务后,向所述主线程发送预设标志为第二标志值的信息,并使所述辅线程进入睡眠状态;
在所述辅线程的睡眠状态符合预设条件的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态。
优选的,所述方法还包括:
使所述辅线程在所述睡眠状态下,与所述主线程同步共享资源。
优选的,所述将所述辅线程从所述睡眠状态转换为阻塞状态之后包括:
所述主线程向所述辅线程发送预设标志为第一标志值的信息,将所述辅线程从所述阻塞状态中唤醒。
优选的,所述在所述辅线程的睡眠状态符合预设条件的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态,包括:
判断所述辅线程的睡眠状态是否超过预设时间阈值,若是,判断所述辅线程的预设标志是否为第二标志值;
在所述辅线程的预设标志为第二标志值的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态。
优选的,所述预设标志为任务处理完毕标志threaddoneflag。
优选的,所述辅线程为信息点搜索线程、导航服务线程、地图面和点元素的显示线程、地图标签的显示线程、地图道路的显示线程、从网络或硬盘获取数据线程其中之一。
本申请第二方面提供一种地图引擎多线程的控制装置,所述装置包括:
发送模块,用于地图引擎中的主线程向辅线程发送任务通知,所述任务通知中包括所述辅线程的预设标志为第一标志值的信息;
启动模块,用于在所述辅线程的预设标志为第一标志值的信息的情况下,启动相应任务;
睡眠模块,用于所述辅线程完成所述任务后,向所述主线程发送预设标志为第二标志值的信息,并使所述辅线程进入睡眠状态;
阻塞模块,用于在所述辅线程的睡眠状态符合预设条件的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态。
优选的,所述装置还包括同步模块;
所述同步模块,用于使所述辅线程在所述睡眠状态下,与所述主线程同步共享资源。
优选的,所述装置还包括唤醒模块;
所述唤醒模块,用于所述主线程向所述辅线程发送预设标志为第一标志值的信息,将所述辅线程从所述阻塞状态中唤醒。
优选的,所述装置还包括第一判断模块、第二判断模块;
所述第一判断模块,用于判断所述辅线程的睡眠状态是否超过预设时间阈值;
所述第二判断模块,用于如果所述第一判断模块判断所述辅线程的睡眠状态超过预设时间阈值,判断所述辅线程的预设标志是否为第二标志值;
所述阻塞模块,具体用于在所述第二判断模块判断所述辅线程的预设标志为第二标志值的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态。
本申请第三方面提供一种电子设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
本申请第四方面提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。
本申请提供的技术方案可以包括以下有益效果:
本申请实施例示出的地图引擎多线程的控制方法,根据辅线程任务完成后的第二标志值,使辅线程依次进入睡眠状态和阻塞状态,处于睡眠状态和阻塞状态的辅线程占用较少甚至不占用系统资源,能够降低任务完成后的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的处理速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
通过结合附图对本申请示例性实施方式进行更详细的描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
图1是本申请实施例示出的地图引擎多线程的控制方法的流程示意图;
图2是本申请实施例示出的地图引擎多线程的控制方法的另一流程示意图;
图3是本申请实施例示出的地图引擎多线程的控制装置的结构示意图;
图4是本申请实施例示出的地图引擎多线程的控制装置的另一结构示意图;
图5是本申请实施例示出的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的优选实施方式。虽然附图中显示了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
本申请实施例提供一种地图引擎多线程的控制方法,能够降低地图引擎对系统资源的消耗,提高地图引擎的处理速度。
以下结合附图详细描述本申请实施例的技术方案。
实施例一:
图1是本申请实施例示出的地图引擎多线程的控制方法的流程示意图。
参见图1,一种地图引擎多线程的控制方法,包括:
在步骤101中,地图引擎中的主线程向辅线程发送任务通知,任务通知中包括辅线程的预设标志。
在一种具体实施方式中,地图引擎包括主线程和至少一个辅线程,主线程为控制主流程的线程,辅线程为与各地图元素的获取和显示相关的线程。主线程和至少一个辅线程通过预设flag(标志)实现交互。地图引擎在接收到用户输入的数据请求后,地图引擎的主线程向辅线程发送与数据请求相关的任务通知,任务通知中包括预设flag,预设flag可以是第一flag值threaddoneflag=0或第二flag值threaddoneflag=1。
在步骤102中,在辅线程的预设标志为第一标志值的信息的情况下,启动相应任务。
在一种具体实施方式中,在辅线程接收到主线程发送的包括任务和预设flag为第一flag值threaddoneflag=0的任务通知后,辅线程根据接收的第一flag值threaddoneflag=0,启动相应任务,所有接收到第一flag值threaddoneflag=0的辅线程并发执行处理接收到的任务,从网络或者硬盘的地图数据库中获取并显示与各地图元素相关的地图数据。
在一种具体实施方式中,辅线程为信息点搜索线程、导航服务线程、地图面和点元素的显示线程、地图标签的显示线程、地图道路的显示线程、从网络或硬盘获取数据线程其中之一。从网络或硬盘获取数据线程从网络或者硬盘的地图数据库中获取与数据请求对应的各地图元素相关的地图数据;信息点搜索线程向地图数据库请求并获取与数据请求对应的信息点数据;导航服务线程向地图数据库请求并获取与数据请求对应的导航数据;地图面和点元素的显示线程显示与数据请求对应的地图要素面和点数据;地图道路的显示线程显示与数据请求对应的地图要素线数据;地图标签的显示线程显示与数据请求对应的地图要素说明性文字或者标签数据。
在步骤103中,辅线程完成任务后,向主线程发送预设标志为第二标志值的信息,并使辅线程进入睡眠状态。
在一种具体实施方式中,在辅线程的任务处理完毕时,辅线程的预设flag的第一flag值由threaddoneflag=0刷新为第二flag值threaddoneflag=1,向主线程返回辅线程的第二flag值threaddoneflag=1,并使预设flag为第二flag值threaddoneflag=1的辅线程的进入睡眠状态,即sleep(睡眠)预设时间。处于睡眠状态的辅线程不处理任务,暂停运行,释放部分占用的系统资源,可以只占用较少的系统资源。
在步骤104中,在辅线程的睡眠状态符合预设条件的情况下,将辅线程从睡眠状态转换为阻塞状态。
在一种具体实施方式中,在处于睡眠状态的辅线程sleep预设时间,唤醒后,可以根据唤醒后的辅线程的预设flag的第二flag值threaddoneflag=1,使辅线程由睡眠状态进入阻塞状态,将辅线程从睡眠状态转换为阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止刷新预设flag,可以完全释放占用的系统资源。
本申请实施例示出的地图引擎多线程的控制方法,根据辅线程任务完成后的第二标志值,使辅线程依次进入睡眠状态和阻塞状态,处于睡眠状态和阻塞状态的辅线程占用较少甚至不占用系统资源,能够降低任务完成后的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的处理速度。
实施例二:
图2是本申请实施例示出的地图引擎多线程的控制方法的另一流程示意图。图2相对于图1更详细描述了本申请的技术方案。
参见图2,一种地图引擎多线程的控制方法,包括:
在步骤201中,地图引擎中的主线程向辅线程发送任务通知,任务通知中包括辅线程的预设标志。
该步骤可以参见步骤101的描述,此处不再赘述。
在步骤202中,在辅线程的预设标志为第一标志值的信息的情况下,启动相应任务。
该步骤可以参见步骤102的描述,此处不再赘述。
在步骤203中,辅线程完成任务后,向主线程发送预设标志为第二标志值的信息,并使辅线程进入睡眠状态。
该步骤可以参见步骤103的描述,此处不再赘述。
在步骤204中,使辅线程在睡眠状态下,与主线程同步共享资源。
在一种具体实施方式中,处于睡眠状态的辅线程不再占用共享资源,可以使处于睡眠状态的辅线程与主线程同步共享资源,使主线程获取处于睡眠状态的辅线程的地图数据。
在一种具体实施方式中,使辅线程处于睡眠状态的预设时间阈值大于等于处于睡眠状态的辅线程与主线程同步共享资源所需的时间。这样能够保证处于睡眠状态的辅线程与主线程完成同步共享资源,避免主线程与辅线程同步共享资源时发生冲突,引起安全问题。
在步骤205中,判断辅线程的睡眠状态是否超过预设时间阈值;如果超过,执行步骤206;如果没有超过,执行步骤209。
在一种具体实施方式中,处于睡眠状态的辅线程与主线程完成同步共享资源后,判断辅线程的睡眠状态是否超过预设时间阈值,如果辅线程的睡眠状态的时间超过预设时间阈值,执行步骤206;如果辅线程的睡眠状态的时间没有超过预设时间阈值,执行步骤209。
在步骤206中,判断辅线程的预设标志是否为第二标志值;如果辅线程的预设标志是第二标志值,执行步骤207;如果如果辅线程的预设标志不是第二标志值,执行步骤202。
在一种具体实施方式中,在辅线程的睡眠状态超过预设时间阈值时,判断辅线程的预设标志是否为第二flag值threaddoneflag=1,如果辅线程的预设flag为第二flag值threaddoneflag=1,即在辅线程的睡眠状态超过预设时间阈值时,地图引擎中的主线程没有向辅线程发送新的任务通知,辅线程没有接收到新的预设flag为第一flag值threaddoneflag=0的信息,辅线程的预设flag仍为第二flag值threaddoneflag=1,执行步骤207。如果辅线程的预设flag不是第二flag值threaddoneflag=1,即在辅线程的睡眠状态超过预设时间阈值时,地图引擎中的主线程向辅线程发送了新的任务通知,辅线程的预设flag为第一flag值threaddoneflag=0,执行步骤202,辅线程依据预设flag为第一flag值threaddoneflag=0的信息,启动相应任务。
在步骤207中,将辅线程从睡眠状态转换为阻塞状态。
在一种具体实施方式中,在辅线程的睡眠状态超过预设时间阈值,辅线程的预设flag仍为第二flag值threaddoneflag=1时,使辅线程由睡眠状态进入阻塞状态,将辅线程从睡眠状态转换为阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止预设flag的刷新,可以完全释放占用的系统资源,这样可以进一步降低任务处理完成的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的整体处理速度;也可以在地图引擎完成用户的数据请求后,使地图引擎的辅线程不占用系统资源,降低地图引擎在等待状态下对系统资源的消耗。
在步骤208中,主线程向辅线程发送预设标志为第一标志值的信息,以将辅线程从阻塞状态中唤醒。
在一种具体实施方式中,主线程可以向辅线程发送预设flag为第一flag值threaddoneflag=0至处于阻塞状态的辅线程,将处于阻塞状态的辅线程的flag值由threaddoneflag=1刷新为threaddoneflag=0,唤醒处于阻塞状态的辅线程。
在步骤209中,继续使辅线程处于睡眠状态;执行步骤204。
在一种具体实施方式中,如果辅线程的睡眠状态的时间没有超过预设时间阈值,继续使辅线程处于睡眠状态。
本申请实施例示出的地图引擎多线程的控制方法,根据辅线程任务完成后的第二标志值,使辅线程依次进入睡眠状态和阻塞状态,处于睡眠状态和阻塞状态的辅线程占用较少甚至不占用系统资源,能够降低任务完成后的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的处理速度。
进一步的,本申请实施例示出的地图引擎多线程的控制方法,使辅线程在睡眠状态下,与主线程同步共享资源。避免主线程和辅线程在同步共享资源的发生冲突,保证共享资源的安全,提高地图引擎的处理速度。
进一步的,本申请实施例示出的地图引擎多线程的控制方法,在辅线程的睡眠状态超过预设时间阈值,辅线程的预设标志为第二标值threaddoneflag=1时,使处于睡眠状态的辅线程转换为处于阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止预设flag的刷新,可以完全释放占用的系统资源,这样可以降低任务处理完成的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的整体处理速度;也可以在地图引擎完成用户的数据请求后,使地图引擎的辅线程不占用系统资源,降低地图引擎在等待状态下对系统资源的消耗。
实施例三:
与前述应用功能实现方法实施例相对应,本申请还提供了一种地图引擎多线程的控制装置、电子设备及相应的实施例。
图3是本申请实施例示出的地图引擎多线程的控制装置的结构示意图。
参见图3,一种地图引擎多线程的控制装置,包括发送模块301、启动模块302、睡眠模块303、阻塞模块304。
发送模块301,用于地图引擎中的主线程向辅线程发送任务通知,任务通知中包括辅线程的预设标志。
在一种具体实施方式中,地图引擎包括主线程和至少一个辅线程,主线程为控制主流程的线程,辅线程为与各地图元素的获取和显示相关的线程。主线程和至少一个辅线程通过预设flag(标志)实现交互。地图引擎在接收到用户输入的数据请求后,地图引擎的主线程通过发送模块301向辅线程发送与数据请求相关的任务通知,任务通知中包括预设flag,预设flag可以是第一flag值threaddoneflag=0或第二flag值threaddoneflag=1。
启动模块302,用于在辅线程的预设标志为第一标志值的信息的情况下,启动相应任务。
在一种具体实施方式中,在辅线程接收到主线程通过发送模块301发送的包括任务和预设flag为第一flag值threaddoneflag=0的任务通知后,辅线程根据接收的第一flag值threaddoneflag=0,启动模块302启动相应任务,所有接收到第一flag值threaddoneflag=0的辅线程并发执行处理接收到的任务,从网络或者硬盘的地图数据库中获取并显示与各地图元素相关的地图数据。
在一种具体实施方式中,辅线程为信息点搜索线程、导航服务线程、地图面和点元素的显示线程、地图标签的显示线程、地图道路的显示线程、从网络或硬盘获取数据线程其中之一。从网络或硬盘获取数据线程从网络或者硬盘的地图数据库中获取与数据请求对应的各地图元素相关的地图数据;信息点搜索线程向地图数据库请求并获取与数据请求对应的信息点数据;导航服务线程向地图数据库请求并获取与数据请求对应的导航数据;地图面和点元素的显示线程显示与数据请求对应的地图要素面和点数据;地图道路的显示线程显示与数据请求对应的地图要素线数据;地图标签的显示线程显示与数据请求对应的地图要素说明性文字或者标签数据。
睡眠模块303,用于辅线程完成任务后,向主线程发送预设标志为第二标志值的信息,并使辅线程进入睡眠状态。
在一种具体实施方式中,在辅线程的任务处理完毕时,睡眠模块303将辅线程的预设flag的第一flag值由threaddoneflag=0刷新为第二flag值threaddoneflag=1,向主线程返回辅线程的第二flag值threaddoneflag=1,并使预设flag为第二flag值threaddoneflag=1的辅线程的进入睡眠状态,即sleep(睡眠)预设时间。处于睡眠状态的辅线程不处理任务,暂停运行,释放部分占用的系统资源,可以只占用较少的系统资源。
阻塞模块304,用于在辅线程的睡眠状态符合预设条件的情况下,将辅线程从睡眠状态转换为阻塞状态。
在一种具体实施方式中,在处于睡眠状态的辅线程sleep预设时间,唤醒后,阻塞模块304可以根据唤醒后的辅线程的预设flag的第二flag值threaddoneflag=1,使辅线程由睡眠状态进入阻塞状态,将辅线程从睡眠状态转换为阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止刷新预设flag,可以完全释放占用的系统资源。
本申请实施例示出的技术方案,根据辅线程任务完成后的第二标志值,使辅线程依次进入睡眠状态和阻塞状态,处于睡眠状态和阻塞状态的辅线程占用较少甚至不占用系统资源,能够降低任务完成后的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的处理速度。
实施例四:
图4是本申请实施例示出的地图引擎多线程的控制装置的另一结构示意图。图4相对于图3更详细描述了本申请的技术方案。
参见图4,一种地图引擎多线程的控制装置,包括发送模块301、启动模块302、睡眠模块303、阻塞模块304、同步模块401、第一判断模块402、第二判断模块403、唤醒模块404。
发送模块301、启动模块302、睡眠模块303的功能可以参见图3所示。
同步模块401,用于使辅线程在睡眠状态下,与主线程同步共享资源。
在一种具体实施方式中,处于睡眠状态的辅线程不再占用共享资源,同步模块401可以使处于睡眠状态的辅线程与主线程同步共享资源,使主线程获取处于睡眠状态的辅线程的地图数据。
在一种具体实施方式中,睡眠模块303可以使辅线程处于睡眠状态的预设时间阈值大于等于处于睡眠状态的辅线程与主线程同步共享资源所需的时间。这样能够保证同步模块401使处于睡眠状态的辅线程与主线程完成同步共享资源,避免同步模块401同步主线程与辅线程的共享资源时发生冲突,引起安全问题。
第一判断模块402,用于判断辅线程的睡眠状态是否超过预设时间阈值。
第二判断模块403,用于如果第一判断模块402判断辅线程的睡眠状态超过预设时间阈值,判断辅线程的预设标志是否为第二标志值。
阻塞模块304,具体用于在第二判断模块判断辅线程的预设标志为第二标志值的情况下,将辅线程从睡眠状态转换为阻塞状态。
在一种具体实施方式中,在同步模块401使处于睡眠状态的辅线程与主线程完成共享资源的同步后,第一判断模块402判断辅线程的睡眠状态是否超过预设时间阈值,如果第一判断模块402判断辅线程的睡眠状态的时间超过预设时间阈值,第二判断模块403判断辅线程的预设标志是否为第二flag值threaddoneflag=1,如果第二判断模块403判断辅线程的预设flag为第二flag值threaddoneflag=1,即在辅线程的睡眠状态超过预设时间阈值时,地图引擎的主线程没有通过发送模块301向辅线程发送新的任务通知,辅线程没有接收到新的预设flag为第一flag值threaddoneflag=0的信息,辅线程的预设flag仍为第二flag值threaddoneflag=1,阻塞模块304使辅线程由睡眠状态进入阻塞状态,将辅线程从睡眠状态转换为阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止预设flag的刷新,可以完全释放占用的系统资源,这样可以进一步降低任务处理完成的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的整体处理速度;也可以在地图引擎完成用户的数据请求后,使地图引擎的辅线程不占用系统资源,降低地图引擎在等待状态下对系统资源的消耗。
在一种具体实施方式中,如果第一判断模块402判断辅线程的睡眠状态的时间没有超过预设时间阈值,睡眠模块303继续使辅线程处于睡眠状态。
在一种具体实施方式中,如果第二判断模块403判断辅线程的预设flag不是第二flag值threaddoneflag=1,即在辅线程的睡眠状态超过预设时间阈值时,地图引擎中的主线程通过发送模块301向辅线程发送了新的任务通知,辅线程的预设flag为第一flag值threaddoneflag=0,则辅线程依据预设flag为第一flag值threaddoneflag=0的信息,启动模块302启动相应任务。
唤醒模块404,用于主线程向辅线程发送预设标志为第一标志值的信息,将辅线程从阻塞状态中唤醒。
在一种具体实施方式中,主线程可以向辅线程发送预设flag为第一flag值threaddoneflag=0至处于阻塞状态的辅线程,唤醒模块404将处于阻塞状态的辅线程的flag值由threaddoneflag=1刷新为threaddoneflag=0,唤醒处于阻塞状态的辅线程。
本申请实施例示出的技术方案,在辅线程的睡眠状态超过预设时间阈值,辅线程的预设标志为第二标值threaddoneflag=1时,使处于睡眠状态的辅线程转换为处于阻塞状态。处于阻塞状态的辅线程处于永久的阻塞状态,停止运行,停止预设flag的刷新,可以完全释放占用的系统资源,这样可以降低任务处理完成的辅线程对系统资源的消耗,使正在处理任务的其它辅线程获得更多的系统资源,加快处理任务的速度,提高地图引擎的整体处理速度;也可以在地图引擎完成用户的数据请求后,使地图引擎的辅线程不占用系统资源,降低地图引擎在等待状态下对系统资源的消耗。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
图5是本申请实施例示出的电子设备的结构示意图。
参见图5,电子设备50包括存储器501和处理器502。
处理器502可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器501可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器502或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器501可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器501可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器501上存储有可执行代码,当可执行代码被处理器502处理时,可以使处理器502执行上文述及的方法中的部分或全部。
上文中已经参考附图详细描述了本申请的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本申请所必须的。另外,可以理解,本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码指令。
或者,本申请还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或电子设备、服务器等)的处理器执行时,使所述处理器执行根据本申请的上述方法的各个步骤的部分或全部。
本领域技术人员还将明白的是,结合这里的申请所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本申请的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (3)
1.一种地图引擎多线程的控制方法,其特征在于,包括:
地图引擎中的主线程向辅线程发送任务通知,所述任务通知中包括所述辅线程的预设标志,其中,所述辅线程为信息点搜索线程、导航服务线程、地图面和点元素的显示线程、地图标签的显示线程、地图道路的显示线程、从网络或硬盘获取数据线程其中之一;
在所述辅线程的预设标志为第一标志值的信息的情况下,启动相应任务;
所述辅线程完成所述任务后,向所述主线程发送预设标志为第二标志值的信息,并使所述辅线程进入睡眠状态;
使所述辅线程在所述睡眠状态下,与所述主线程同步共享资源;
在所述辅线程的睡眠状态符合预设条件的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态,包括:判断所述辅线程的睡眠状态是否超过预设时间阈值,若是,判断所述辅线程的预设标志是否为第二标志值,在所述辅线程的预设标志为第二标志值的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态;
所述主线程向所述辅线程发送预设标志为第一标志值的信息,将所述辅线程从所述阻塞状态中唤醒。
2.根据权利要求1所述的方法,其特征在于:所述预设标志为任务处理完毕标志threaddoneflag。
3.一种地图引擎多线程的控制装置,其特征在于,包括:
发送模块,用于地图引擎中的主线程向辅线程发送任务通知,所述任务通知中包括所述辅线程的预设标志,其中,所述辅线程为信息点搜索线程、导航服务线程、地图面和点元素的显示线程、地图标签的显示线程、地图道路的显示线程、从网络或硬盘获取数据线程其中之一;
启动模块,用于在所述辅线程的预设标志为第一标志值的信息的情况下,启动相应任务;
睡眠模块,用于所述辅线程完成所述任务后,向所述主线程发送预设标志为第二标志值的信息,并使所述辅线程进入睡眠状态;
同步模块,用于使所述辅线程在所述睡眠状态下,与所述主线程同步共享资源;
第一判断模块,用于判断所述辅线程的睡眠状态是否超过预设时间阈值;
第二判断模块,用于如果所述第一判断模块判断所述辅线程的睡眠状态超过预设时间阈值,判断所述辅线程的预设标志是否为第二标志值;
阻塞模块,用于在所述第二判断模块判断所述辅线程的预设标志为第二标志值的情况下,将所述辅线程从所述睡眠状态转换为阻塞状态;
唤醒模块,用于所述主线程向所述辅线程发送预设标志为第一标志值的信息,将所述辅线程从所述阻塞状态中唤醒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188382.5A CN112559160B (zh) | 2021-02-19 | 2021-02-19 | 地图引擎多线程的控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188382.5A CN112559160B (zh) | 2021-02-19 | 2021-02-19 | 地图引擎多线程的控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559160A CN112559160A (zh) | 2021-03-26 |
CN112559160B true CN112559160B (zh) | 2021-06-04 |
Family
ID=75035964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110188382.5A Active CN112559160B (zh) | 2021-02-19 | 2021-02-19 | 地图引擎多线程的控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559160B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827121B (zh) * | 2023-01-16 | 2023-05-16 | 南京国睿信维软件有限公司 | 基于图元素的异步仿真执行引擎系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107085542A (zh) * | 2017-05-05 | 2017-08-22 | 深圳慧昱教育科技有限公司 | Ipc通信方法和服务器 |
CN109189483A (zh) * | 2018-08-02 | 2019-01-11 | 优视科技新加坡有限公司 | 任务执行的调控方法、装置、设备/终端/服务器及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050305A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US8566827B2 (en) * | 2005-10-27 | 2013-10-22 | International Business Machines Corporation | System and method of arbitrating access of threads to shared resources within a data processing system |
CN1801101A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中线程的实现和线程状态切换的方法 |
DE602007004209D1 (de) * | 2007-08-13 | 2010-02-25 | Accenture Global Services Gmbh | Nachrichtensequenzer für korrelierte Unternehmensereignisse |
CN100489788C (zh) * | 2007-09-30 | 2009-05-20 | 金蝶软件(中国)有限公司 | 一种线程唤醒控制方法和系统 |
CN104850460A (zh) * | 2015-06-02 | 2015-08-19 | 上海斐讯数据通信技术有限公司 | 一种服务程序线程管理方法 |
-
2021
- 2021-02-19 CN CN202110188382.5A patent/CN112559160B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107085542A (zh) * | 2017-05-05 | 2017-08-22 | 深圳慧昱教育科技有限公司 | Ipc通信方法和服务器 |
CN109189483A (zh) * | 2018-08-02 | 2019-01-11 | 优视科技新加坡有限公司 | 任务执行的调控方法、装置、设备/终端/服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112559160A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8214662B2 (en) | Multiprocessor control unit, control method performed by the same, and integrated circuit | |
EP2656170B1 (en) | Minimizing resource latency between processor application states in a portable computing device by scheduling resource set transitions | |
US7454632B2 (en) | Reducing computing system power through idle synchronization | |
US8954983B2 (en) | Conserving power through work load estimation for a portable computing device using scheduled resource set transitions | |
JP5229326B2 (ja) | マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム | |
US8766919B1 (en) | Fast awake from low power mode | |
JP6491326B2 (ja) | アプリケーションプログラムを実行するための方法および装置 | |
US20100110089A1 (en) | Multiple GPU Context Synchronization Using Barrier Type Primitives | |
EP3440531B1 (en) | Enhanced dynamic clock and voltage scaling (dcvs) scheme | |
JP2011521365A (ja) | 電力消費低減のためのスリープ状態を提供する補助メモリ制御器を有する集積回路及びそのための方法 | |
CN112559160B (zh) | 地图引擎多线程的控制方法及装置 | |
KR20010105279A (ko) | 고성능 dma 콘트롤러 | |
US9652022B2 (en) | System and method for providing dynamic quality of service levels based on coprocessor operation | |
CN115509342B (zh) | 一种多核集群之间的切换方法及系统 | |
US20120291043A1 (en) | Minimizing Resource Latency Between Processor Application States In A Portable Computing Device By Using A Next-Active State Set | |
US9507641B1 (en) | System and method for dynamic granularity control of parallelized work in a portable computing device (PCD) | |
US8314806B2 (en) | Low power display mode | |
US20160147577A1 (en) | System and method for adaptive thread control in a portable computing device (pcd) | |
US9299415B1 (en) | Method and apparatus for automatic transition of a volatile memory between low power states | |
US9612907B2 (en) | Power efficient distribution and execution of tasks upon hardware fault with multiple processors | |
CN110018911B (zh) | 进程管理及进程间通信方法、装置、计算设备及存储介质 | |
JP5887952B2 (ja) | 車載端末、及び、アプリケーション実行環境プログラム | |
CN111367625B (zh) | 一种线程的唤醒方法及装置,存储介质和电子设备 | |
CN117008980A (zh) | 系统休眠方法及装置、系统唤醒方法及装置 | |
CN114443255A (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 |