CN116578404B - 线程管理方法、装置、存储介质及电子设备 - Google Patents

线程管理方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN116578404B
CN116578404B CN202310836301.7A CN202310836301A CN116578404B CN 116578404 B CN116578404 B CN 116578404B CN 202310836301 A CN202310836301 A CN 202310836301A CN 116578404 B CN116578404 B CN 116578404B
Authority
CN
China
Prior art keywords
thread
interface
rpc
interface type
proprietary
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
CN202310836301.7A
Other languages
English (en)
Other versions
CN116578404A (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.)
Vita Technology Beijing Co ltd
Original Assignee
Vita Technology Beijing 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 Vita Technology Beijing Co ltd filed Critical Vita Technology Beijing Co ltd
Priority to CN202310836301.7A priority Critical patent/CN116578404B/zh
Publication of CN116578404A publication Critical patent/CN116578404A/zh
Application granted granted Critical
Publication of CN116578404B publication Critical patent/CN116578404B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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

本公开涉及计算机技术领域,涉及一种线程管理方法、装置、存储介质及电子设备,以降低资源开销。该线程管理方法包括:响应于调用端调用的RPC接口,确定RPC接口的接口类型;确定预设线程池中与接口类型对应的目标线程;在接口类型为专有接口类型时,目标线程为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程为预设线程池中任一空闲的普通线程;将RPC接口对应的任务调度到目标线程上执行,以得到执行结果。

Description

线程管理方法、装置、存储介质及电子设备
技术领域
本公开涉及计算机技术领域,具体地,涉及一种线程管理方法、装置、存储介质及电子设备。
背景技术
随着机器学习、深度学习以及高性能计算领域的高速发展,底层芯片的计算能力大幅提升,与底层芯片发展密切相关的“通用并行计算库”也相应发展起来。英伟达以及AMD等GPGPU(通用图形处理器,General-purpose computing on graphics processingunits)芯片厂商提供了对应芯片的通用并行计算库,例如CUDA以及ROCm等。通用并行计算库的出现,大幅降低了开发人员对高性能并行计算方法的开发成本,由此开发人员可以通过调用通用并行计算库提供的相关编程接口(API,Application Programming Interface)来发挥芯片的并行计算优势,提高软件的执行性能。
高性能的通用并行计算库依赖于底层硬件以及执行环境支持,例如依赖于CPU、GPU、NPU以及TPU等芯片及其驱动的支持。为了更好地利用并行计算芯片,相关技术将高性能计算芯片相关的计算以远端服务的方式提供给开发人员,也即提供“面向通用并行计算的远程过程调用服务”。这种远程过程调用(RPC,Remote Procedure Call)服务通常向开发人员提供通用并行计算库的API,从而可以基于接收到的API进行高性能计算,并返回相应的计算结果。
由于,CUDA等通用并行计算库所提供的API具备较高的灵活性,因此为了支持开发人员发送到远端执行的不同类型的API,RPC服务端通常相应地创建以及使用一些线程,来执行对应类型的API。在没有统筹设计的情况下,RPC服务端通常为支持不同类型的API创建相应的线程,或者,为支持某一类的API创建线程池。在RPC服务端的资源使用规模较小的情况下,这种方式可以正常运行。然而,在RPC服务端的资源使用规模逐渐增大后,RPC服务端频繁创建以及销毁大量的线程,并且还可能存在任务已经结束但未被主线程回收的线程,由此造成线程资源的浪费,资源开销大。
发明内容
本公开的目的是提供一种线程管理方法、装置、存储介质及电子设备,以降低资源开销。
为了实现上述目的,本公开实施例的第一方面提供一种线程管理方法,所述方法包括:
响应于调用端调用的RPC接口,确定所述RPC接口的接口类型;
确定预设线程池中与所述接口类型对应的目标线程;在所述接口类型为专有接口类型时,所述目标线程为所述预设线程池中具有RPC接口指定的线程ID的专有线程,在所述接口类型为普通接口类型时,所述目标线程为所述预设线程池中任一空闲的普通线程;
将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果。
可选地,所述确定所述RPC接口的接口类型,包括:
基于RPC接口与接口类型之间的预设映射关系,确定所述RPC接口的接口类型。
可选地,所述接口类型为专有接口类型或者状态结束接口类型,所述确定预设线程池中与所述接口类型对应的目标线程,包括:
确定所述RPC接口的参数中包括线程ID;
确定所述预设线程池中与所述线程ID对应的第一线程;
在所述第一线程为专有线程的情况下,将所述第一线程作为与所述接口类型对应的目标线程。
可选地,所述方法还包括:
在所述第一线程为普通线程的情况下,返回非法调用信号至所述调用端;或者,在所述第一线程为普通线程的情况下,若确定所述RPC接口属于预设的专有任务接口,则将所述第一线程转化为专有线程。
可选地,所述接口类型为状态开始接口类型,所述确定预设线程池中与所述接口类型对应的目标线程,包括:
确定所述预设线程池中任一空闲的普通线程;
将所述普通线程转化为专有线程,并将该专有线程作为所述目标线程;
所述方法还包括:
将转化得到的所述专有线程的线程ID发送至所述调用端。
可选地,所述接口类型为状态结束接口类型,所述第一线程为专有线程,所述方法还包括:
在将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果之后,将所述第一线程转化为普通线程。
可选地,在所述确定预设线程池中与所述接口类型对应的目标线程之前,所述方法还包括:
确定所述接口类型非结束RPC调用类型;
所述方法还包括:
在所述接口类型为所述结束RPC调用类型的情况下,确定所述预设线程池中被所述调用端调用过的每一专有线程,并将所述每一专有线程转化为普通线程。
本公开实施例的第二方面提供一种线程管理装置,所述装置包括:
分类模块,用于响应于调用端调用的RPC接口,确定所述RPC接口的接口类型,以及确定预设线程池中与所述接口类型对应的目标线程;在所述接口类型为专有接口类型时,所述目标线程为所述预设线程池中具有RPC接口指定的线程ID的专有线程,在所述接口类型为普通接口类型时,所述目标线程为所述预设线程池中任一空闲的普通线程;
调度模块,用于将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果。
本公开实施例的第三方面提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面中任一项所提供的线程管理方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所提供的线程管理方法的步骤。
通过上述技术方案,对RPC接口进行归类,以确定RPC接口对应的任务执行在专有线程或是普通线程,并在预设线程池中提供对应类型的执行线程,从而可以根据调用端所调用的RPC接口的接口类型,从预设线程池中确定与该接口类型对应的目标线程,其中,在接口类型为专有接口类型时,目标线程可以为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程可以为预设线程池中任一空闲的普通线程。在此基础上,可以将RPC接口对应的任务调度到对应的目标线程上执行,以得到执行结果。由此基于不同类型的RPC接口,提供支持专有线程的预设线程池来执行对应的任务,从而在兼顾对普通线程的调度的基础上,基于线程池的优势来对专有线程进行统一调度,减少RPC服务端的环境准备开销以及线程资源浪费,有效降低资源开销。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据相关技术示出的一种远程过程调用的示意图。
图2是根据相关技术示出的一种单线程工作模式的示意图。
图3是根据相关技术示出的一种专有线程工作模式的示意图。
图4是根据相关技术示出的一种线程池工作模式的示意图。
图5是根据一示例性实施例示出的一种线程管理方法的流程图。
图6是根据一示例性实施例示出的一种远程过程调用的示意图。
图7是根据一示例性实施例示出的另一种线程管理方法的流程图。
图8是根据一示例性实施例示出的又一种线程管理方法的流程图。
图9是根据一示例性实施例示出的再一种线程管理方法的流程图。
图10是根据一示例性实施例示出的一种线程管理装置的框图。
图11是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
远程过程调用(RPC)是一种常见的计算机程序实现方法,该方法允许应用程序调用RPC服务提供的RPC接口,从而在远端执行RPC接口对应的任务,并得到执行结果。其中,RPC接口可以是RPC服务端提供的通用并行计算库的接口(API)。
参照图1,图1是根据相关技术示出的一种远程过程调用的示意图。在图1所示的远程过程调用中,上层的业务应用100可以通过RPC客户端110调用RPC服务端120提供的RPC接口。其中,RPC客户端110作为调用端可以通过RPC转发引擎115将业务应用100调用的RPC接口转发给远端的RPC服务端120。在此基础上,RPC服务端120基于所接收到的RPC接口执行对应的任务,并通过RPC转发引擎115将执行结果回传给RPC客户端110。最后,由RPC客户端110将收到的执行结果返回给业务应用100。由此完成一次RPC的调用流程。
在上述远程过程调用中,业务应用100所调用的RPC接口通常可以包括:同步协同接口、上下文相关接口以及常规接口。其中,常规接口的调用通常与线程的工作模式无关,由此,在本公开实施例中可以将常规接口归类为普通接口类型,并且按照常规的RPC调用流程执行常规接口对应的任务。
同步协同接口通常成组出现,也即在语义上规定一组接口,这一组接口之间存在协同依赖,由此无法在单线程中串行执行。示例地,在RPC服务端接收到指示执行任务A以及任务B的同步协同接口的情况下,由于任务A以及任务B之间存在协同依赖,因此通常分别创建或调度用于执行任务A的线程A以及用于执行任务B的线程B。在此基础上,可以按照同步协同接口所定义的语义分别在对应的线程上执行任务A以及任务B。例如,RPC服务端可以先在线程A上执行任务A,并在执行过程中根据语义进入等待状态,以等待与执行任务B的线程B同步通讯,在线程A与线程B同步通讯后,线程A以及线程B可以一同继续执行后续的任务。在该示例中,若任务B没有在线程B上执行,那么线程A上执行的任务A将会永久等待下去,或者超时报错退出。
上下文相关接口通常指示一系列在同一线程上执行、且相互影响的任务,这些任务中一些前序执行的任务对后续执行的任务产生影响。例如,在上下文相关接口中的前序接口指示对线程本地(ThreadLocal)变量进行修改的基础上,通常有对应的后续接口指示根据被修改的线程本地变量做出相应的行为。由此,将上下文相关接口的任务调度到同一线程上执行与将上下文相关接口的任务分别调度到不同线程上执行的结果不一致。
针对上述不同类型的RPC接口,相关技术提供了如图2-4所示的几种线程的工作模式。其中,图2所示的单线程工作模式实现简单,但这种工作模式的执行效率低下,无法保证原有业务多线程并发的高性能,且不支持上述同步协同接口,在执行同步协同接口对应的任务时容易造成等待死锁,或者造成用于解决死锁问题的临时线程的频繁创建与销毁。
图3所示的专有线程工作模式可以支持同步协同接口以及上下文相关接口。在专有线程工作模式下,RPC服务端120可以根据RPC客户端110每一个发送RPC接口的线程创建一个对应的执行线程,由此每当RPC客户端110有一个新的线程发送请求,RPC服务端120对应创建一个线程提供服务,从而在一定程度上发挥线程并发优势。然而,这种工作模式在服务多个RPC客户端时,通常创建过多线程,造成线程开销过大,甚至超过***物理支持的最大线程数的问题。
图4所示的线程池工作模式可以将RPC客户端110的N个线程的任务统一调度到RPC服务端120侧预设有M个线程的线程池中。这种线程工作模式可以在有效减少线程开销的基础上支持同步协同接口,但是线程池缺乏调度逻辑,而难以将上下文相关接口对应的任务调度到指定线程上执行。
由此,在实际应用过程中,相关技术通常采用线程池以及针对上下文相关接口的任务另外创建专有线程的方式来支持不同类型的RPC接口。然而,针对另外创建的专有线程,由于没有统一的线程支持方法,开发人员通常针对具备不同语义的上下文相关接口重复独立地完成一些类似的线程调用工作,并且这些零散调用的线程难以统一管理,从而产生大量非活跃线程,造成线程资源的浪费,资源开销大。
有鉴于此,本公开实施例提供一种线程管理方法、装置、存储介质及电子设备,通过对RPC接口进行归类,以确定RPC接口对应的任务执行在专有线程或是普通线程,并在预设线程池中提供对应类型的执行线程,从而可以根据调用端所调用的RPC接口的接口类型,从预设线程池中确定与该接口类型对应的目标线程,其中,在接口类型为专有接口类型时,目标线程可以为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程可以为预设线程池中任一空闲的普通线程。在此基础上,可以将RPC接口对应的任务调度到对应的目标线程上执行,以得到执行结果。由此基于不同类型的RPC接口,提供支持专有线程的预设线程池来执行对应的任务,从而在兼顾对普通线程的调度的基础上,基于线程池的优势来对专有线程进行统一调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
参照图5,图5是根据一示例性实施例示出的一种线程管理方法的流程图。该线程管理方法可以应用于RPC服务端120,以对线程进行管理,降低资源开销。该线程管理方法可以包括:
步骤S501,响应于调用端调用的RPC接口,确定RPC接口的接口类型。
其中,调用端可以是RPC客户端110。上层的业务应用100可以通过调用端调用RPC接口,并将RPC接口发送到RPC服务端120执行。在此基础上,RPC服务端120可以根据接收到的RPC接口,确定该RPC接口的接口类型。
步骤S502,确定预设线程池中与接口类型对应的目标线程;在接口类型为专有接口类型时,目标线程为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程为预设线程池中任一空闲的普通线程。
其中,预设线程池区别于相关技术的线程池,在提供用于执行常规接口以及同步协同接口所对应任务的普通线程的基础上,还可以提供用于执行上下文接口所对应任务的专有线程。普通线程的调度遵循线程池的调度原则,通常是随机的。不同于普通线程,专有线程不接受随机的任务调度,而只在被指定时调度,用于执行被指定的任务。示例地,可以根据RPC接口指定的线程ID确定对应的专有线程,并将该RPC接口对应的任务调度到该专有线程上执行。线程ID可以用于标识RPC接口,线程ID的设置可以参照相关技术,本公开对此不作具体限定。
应说明的是,预设线程池中至少预设有普通线程,以用于执行常规接口以及同步协同接口对应的任务。在本公开实施例中,普通线程可以转化为专有线程,以用于执行上下文相关接口对应的任务。在一种可能的实现方式中,预设线程池中还可以预设有专有线程,并在RPC客户端110调用这些专有线程之前提供对应的线程ID。由此,在接口类型为专有接口类型的情况下,目标线程可以是预设线程池中预先创建的具有RPC接口指定的线程ID的专有线程,也可以是由预设线程池中任一普通线程转化得到的专有线程。在接口类型为普通接口类型时,目标线程可以是预设线程池中任一空闲的普通线程。
这样,基于RPC接口的接口类型为预设线程池配置相应的调度逻辑,从而可以针对上下文相关接口对应的任务提供对应的专有线程。由此基于线程池的优势来对专有线程进行统一调度,同时兼顾对普通线程的调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
步骤S503,将RPC接口对应的任务调度到目标线程上执行,以得到执行结果。
不难理解的是,在得到执行结果后,RPC服务端120可以将执行结果返回给RPC客户端110,以完成本次远程过程调用服务。
通过上述技术方案,对RPC接口进行归类,以确定RPC接口对应的任务执行在专有线程或是普通线程,并在预设线程池中提供对应类型的执行线程,从而可以根据调用端所调用的RPC接口的接口类型,从预设线程池中确定与该接口类型对应的目标线程,其中,在接口类型为专有接口类型时,目标线程可以为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程可以为预设线程池中任一空闲的普通线程。在此基础上,可以将RPC接口对应的任务调度到对应的目标线程上执行,以得到执行结果。由此基于不同类型的RPC接口,提供支持专有线程的预设线程池来执行对应的任务,从而在兼顾对普通线程的调度的基础上,基于线程池的优势来对专有线程进行统一调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
参照图6,图6是根据一示例性实施例示出的一种远程过程调用的示意图。在本公开实施例中,可以在RPC服务端120设置接口分类器122以及预设线程池124。其中,接口分类器122可以用于对接收到的RPC接口进行分类,确定RPC接口的接口类型。
在此基础上,在RPC服务端120接收到RPC客户端110发送的RPC接口后,可以通过接口分类器122确定RPC接口的接口类型。之后,可以从预设线程池124中确定与接口类型对应的目标线程,并将RPC接口对应的任务调度到该目标线程上执行,以得到执行结果。由此通过提供支持专有线程的预设线程池,并对RPC接口进行分类,从而可以基于线程池的优势来对专有线程进行统一调度,同时兼顾对普通线程的调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
可选地,上述步骤S501中,确定RPC接口的接口类型可以包括:
基于RPC接口与接口类型之间的预设映射关系,确定RPC接口的接口类型。
可以理解的是,不同RPC接口的接口属性可以不相同。其中,接口属性可以包括接口名称以及接口参数等。由此可以根据RPC接口的接口名称以及接口参数中的至少一种接口属性建立全量RPC接口与接口类型之间的预设映射关系。在具体实现中,也可以根据实际情况基于其它接口属性建立RPC接口与接口类型之间的预设映射关系,本公开对此不作具体限定。
应说明的是,本公开实施例的接口类型可以包括普通接口类型、专有接口类型、状态开始接口类型以及状态结束接口类型。相关技术中的同步协同接口以及常规接口可以被划分为普通接口类型,这类接口对应的任务通常可以调度到预设线程池中任一空闲的普通线程上执行。上下文相关接口可以被划分为专有接口类型、状态开始接口类型或者状态结束接口类型。这类接口对应的任务通常相互影响,可以调度到被指定的专有线程上执行。
其中,上下文相关接口对应的任务可以为专有任务。在此基础上,状态开始接口类型通常指一系列专有任务中的状态开始任务所对应的RPC接口,这类RPC接口通常在相关的通用并行计算库中有对应的起始接口范式,由此可以将属于该起始接口范式的RPC接口确定为状态开始接口类型。类似地,状态结束接口类型通常指一系列专有任务中的状态结束任务所对应的RPC接口,这类RPC接口通常在相关的通用并行计算库中有对应的终止接口范式,由此可以将属于该终止接口范式的RPC接口确定为状态结束接口类型。可以理解的是,专有接口类型通常指专有任务中除了状态开始任务以及状态结束任务之外的任务对应的RPC接口,这类接口可以根据实际情况进行设置,本公开对此不作具体限定。
在一种可能的实现方式中,还可以根据实际需求,将相关的通用并行计算库所规定的起始接口范式以外的一些RPC接口确定为状态开始接口类型,或者将终止接口范式以外的一些RPC接口确定为状态结束接口类型。
在本公开实施例中,可以通过接口分类器122实现根据上述分类逻辑,从而为预设线程池124配置相应的调度逻辑,以减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
示例地,在步骤S501确定的RPC接口为普通接口类型的情况下,上述步骤S502可以包括:确定预设线程池中任一空闲的普通线程,将该普通线程作为目标线程。其中,若预设线程池中不存在空闲的普通线程,那么可以在预设线程池的线程数量不大于最大线程数的基础上,创建一个新的普通线程。其中,最大线程数可以根据实际情况而定,本公开对此不作具体限定。应当理解的是,若创建新的普通线程失败,那么可以返回调用失败信号等相关的错误提示信息至调用端。
参照图7,图7是根据一示例性实施例示出的另一种线程管理方法的流程图。如图7所示,在步骤S501确定的RPC接口为状态开始接口类型的情况下,上述步骤S502可以包括:
S7021,确定预设线程池中任一空闲的普通线程;
S7022,将普通线程转化为专有线程,并将该专有线程作为目标线程。
在一种可能的实现方式中,若RPC接口为状态开始接口类型,可以确定该RPC接口对应的任务为专有任务、且为专有任务中的状态开始任务。在此情况下,可以将预设线程池中任一空闲的普通线程转化为专有线程,从而用于执行RPC接口对应的专有任务。若当前预设线程池中不存在空闲的普通线程,那么在预设线程池的线程数量不大于最大线程数的基础上,可以创建对应的专有线程,或者创建普通线程,并将该普通线程转化为专有线程。在此基础上,本公开实施例提供的技术方案还可以包括:
S7023,将转化得到的专有线程的线程ID发送至调用端。
由此,在调用端接收到线程ID后,可以发送包括该线程ID的后续任务的RPC接口,从而使得RPC服务端120可以根据调用端所发送的RPC接口中的线程ID,将RPC接口对应的上下文相关的一系列任务调度到指定的专有线程上执行。
参照图8,图8是根据一示例性实施例示出的又一种线程管理方法的流程图。如图8所示,在步骤S501确定的RPC接口为专有接口类型的情况下,上述步骤S502可以包括:
S8021,确定RPC接口的参数中包括线程ID;
S8022,确定预设线程池中与线程ID对应的第一线程;
S8023,在第一线程为专有线程的情况下,将该第一线程作为与接口类型对应的目标线程。
应说明的是,专有接口类型的RPC接口对应的任务通常调度到指定的专有线程上,该专有线程通常可以由RPC接口所包括的线程ID指定。在一实施例中,若RPC接口的参数中未包括线程ID,那么可以返回非法调用信号等相关的错误提示信息至调用端。
在另一实施例中,若RPC接口的参数中包括线程ID,那么可以确定预设线程池中与该线程ID 对应的第一线程。在此基础上,若第一线程为专有线程,那么可以将该第一线程作为与接口类型对应的目标线程。若第一线程为普通线程,在此情况下,本公开实施例提供的技术方案还可以包括:
S8024,在第一线程为普通线程的情况下,返回非法调用信号至调用端;或者,在第一线程为普通线程的情况下,若确定RPC接口属于预设的专有任务接口,则将第一线程转化为专有线程。
其中,非法调用信号中可以包括非法标志,该非法标志可以用于表征具体出错类型,例如可以表征RPC接口指定的线程非专有线程,在此情况下,非法标志可以用于提示调用端修改RPC接口所包括的线程ID。非法调用信号还可以包括其他相关信息,例如包括空闲的专有线程的线程ID。非法调用信号的具体实现可以参照相关技术,本公开对此不作具体限定。
预设的专有任务接口可以根据实际情况而定,例如预设的专有任务接口可以为属于专有接口类型、状态开始接口类型或者状态结束接口类型中的至少一种类型的接口。通过确定RPC接口属于预设的专有任务接口,可以确定RPC接口的专有调用无误,在此情况下,可以自动将第一线程转化为专有线程,由此提高本公开实施例这种线程管理方法的鲁棒性。
参照图9,图9是根据一示例性实施例示出的再一种线程管理方法的流程图。如图9所示,在步骤S501确定的RPC接口为状态结束接口类型的情况下,上述步骤S502可以包括:
S9021,确定RPC接口的参数中包括线程ID;
S9022,确定预设线程池中与线程ID对应的第一线程;
S9023,在第一线程为专有线程的情况下,将第一线程作为与接口类型对应的目标线程。
在此基础上,本公开实施例提供的技术方案还可以包括:
S9024,在第一线程为普通线程的情况下,返回非法调用信号至调用端;或者,在第一线程为普通线程的情况下,若确定RPC接口属于预设的专有任务接口,则将第一线程转化为专有线程。
应说明的是,步骤S9021~S9023的执行过程与步骤S8021~S8023类似,步骤S9024的执行过程与步骤S8024类似。由此,可以参照上述相关说明,此处不再赘述。
沿用图9示例,在RPC接口为状态结束接口类型的基础上,可以将RPC接口对应的任务调度到目标线程上执行,以得到执行结果。在此基础上,本公开实施例提供的技术方案还可以包括:
S9025,将第一线程转化为普通线程。
在一种可能的实现方式中,在RPC接口为状态结束接口类型的情况下,可以确定该RPC接口对应的任务为专有任务、且为专有任务中的状态结束任务。在此情况下,可以在得到执行结果后,将作为目标线程的第一线程转化为普通线程,以去除第一线程的专有状态。
应说明的是,针对未提供终止接口范式的相关通用并行计算库,本公开实施例还可以提供默认回收机制,该默认回收机制用于在调用端结束RPC服务时,默认将被调用端调用过的每一专有线程转化为普通线程。
可选地,在确定预设线程池中与接口类型对应的目标线程之前,本公开实施例提供的技术方案还可以包括:
确定接口类型非结束RPC调用类型。
其中,结束RPC调用类型的RPC接口可以用于结束RPC服务。非结束RPC调用类型可以包括:普通接口类型、专有接口类型、以及状态开始接口类型。
在此基础上,本公开实施例提供的技术方案还可以包括:
在接口类型为结束RPC调用类型的情况下,确定预设线程池中被调用端调用过的每一专有线程,并将每一专有线程转化为普通线程。
由此,可以完善预设线程池中对专有线程的调度逻辑,进一步降低资源开销。
在一种可能的实现方式中,本公开实施例提供的技术方案针对同步协同接口以及常规接口对应的任务,也即普通接口类型的RPC接口所对应的任务,可以默认将其归类为无状态任务,并将无状态任务交由预设线程池随意调度,也即按照常规的线程调度方式调度无状态任务。在所需并发的线程数量超过当前预设线程池的线程数目、且不大于最大线程数的情况下,可以创建更多的执行线程进行服务。针对上下文相关接口对应的任务,也即状态开始接口类型、状态结束接口类型以及专有接口类型的RPC接口所对应的任务,可以将状态开始接口类型对应的任务归类为状态开始任务,将状态结束接口类型的任务归类为状态结束任务,以及将专有接口类型的任务归类为有状态任务。由此,在检测到状态开始接口类型的RPC接口时,启用对应的专有线程,并返回对应的线程ID至调用端,以及在检测到包括该线程ID的状态结束接口类型的RPC接口时,去除所指定的专有线程的专有状态。在此基础上,在检测到状态开始接口类型以及状态结束接口类型之间的专有接口类型的RPC接口时,将对应的任务统一调度到线程ID指定的同一个专有线程上。
值得说明的是,通过本公开实施例这种支持专有线程的预设线程池,可以有效复用RPC服务端120的线程,减少线程创建以及销毁的开销,同时可以结合动态线程池的相关技术,有效提高线程利用率,大幅减少非活跃的线程数量,按照需求创建线程。专有线程的支持,还可以减少执行线程切换引入的上下文拷贝问题,以及减少RPC服务端120的环境准备开销。
通过上述技术方案,对RPC接口进行归类,以确定RPC接口对应的任务执行在专有线程或是普通线程,并在预设线程池中提供对应类型的执行线程,从而可以根据调用端所调用的RPC接口的接口类型,从预设线程池中确定与该接口类型对应的目标线程,其中,在接口类型为专有接口类型时,目标线程可以为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程可以为预设线程池中任一空闲的普通线程。在此基础上,可以将RPC接口对应的任务调度到对应的目标线程上执行,以得到执行结果。由此基于不同类型的RPC接口,提供支持专有线程的预设线程池来执行对应的任务,从而在兼顾对普通线程的调度的基础上,基于线程池的优势来对专有线程进行统一调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
基于相同的构思,本公开还提供一种线程管理装置1000,参照图10,图10是根据一示例性实施例示出的一种线程管理装置1000的框图。该线程管理装置1000包括:
分类模块1001,用于响应于调用端调用的RPC接口,确定所述RPC接口的接口类型,以及确定预设线程池中与所述接口类型对应的目标线程;在所述接口类型为专有接口类型时,所述目标线程为所述预设线程池中具有RPC接口指定的线程ID的专有线程,在所述接口类型为普通接口类型时,所述目标线程为所述预设线程池中任一空闲的普通线程;
调度模块1002,用于将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果。
通过上述技术方案,对RPC接口进行归类,以确定RPC接口对应的任务执行在专有线程或是普通线程,并在预设线程池中提供对应类型的执行线程,从而可以根据调用端所调用的RPC接口的接口类型,从预设线程池中确定与该接口类型对应的目标线程,其中,在接口类型为专有接口类型时,目标线程可以为预设线程池中具有RPC接口指定的线程ID的专有线程,在接口类型为普通接口类型时,目标线程可以为预设线程池中任一空闲的普通线程。在此基础上,可以将RPC接口对应的任务调度到对应的目标线程上执行,以得到执行结果。由此通过提供支持专有线程的预设线程池,并对RPC接口进行分类,从而可以基于线程池的优势来对专有线程进行统一调度,同时兼顾对普通线程的调度,减少RPC服务端120的环境准备开销以及线程资源浪费,有效降低资源开销。
可选地,分类模块1001进一步用于:
基于RPC接口与接口类型之间的预设映射关系,确定所述RPC接口的接口类型。
可选地,所述接口类型为专有接口类型或者状态结束接口类型,分类模块1001进一步用于:
确定所述RPC接口的参数中包括线程ID;
确定所述预设线程池中与所述线程ID对应的第一线程;
在所述第一线程为专有线程的情况下,将所述第一线程作为与所述接口类型对应的目标线程。
可选地,线程管理装置1000还包括控制模块,该控制模块用于:
在所述第一线程为普通线程的情况下,返回非法调用信号至所述调用端;或者,在所述第一线程为普通线程的情况下,若确定所述RPC接口属于预设的专有任务接口,则将所述第一线程转化为专有线程。
可选地,所述接口类型为状态开始接口类型,分类模块1001进一步用于:
确定所述预设线程池中任一空闲的普通线程;
将所述普通线程转化为专有线程,并将该专有线程作为所述目标线程;
在此次基础上,线程管理装置1000还包括发送模块,该发送模块用于:
将转化得到的所述专有线程的线程ID发送至所述调用端。
可选地,所述接口类型为状态结束接口类型,所述第一线程为专有线程,线程管理装置1000还包括转化模块,该转化模块用于:
在将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果之后,将所述第一线程转化为普通线程。
可选地,线程管理装置1000还包括确定模块,该确定模块用于:
在所述确定预设线程池中与所述接口类型对应的目标线程之前,确定所述接口类型非结束RPC调用类型;
该确定模块还用于:
在所述接口类型为所述结束RPC调用类型的情况下,确定所述预设线程池中被所述调用端调用过的每一专有线程,并将所述每一专有线程转化为普通线程。
关于上述实施例中的线程管理装置1000,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种电子设备1100的框图。如图11所示,该电子设备1100可以包括:处理器1101,存储器1102。该电子设备1100还可以包括多媒体组件1103,输入/输出(I/O)接口1104,以及通信组件1105中的一者或多者。
其中,处理器1101用于控制该电子设备1100的整体操作,以完成上述的线程管理方法中的全部或部分步骤。存储器1102用于存储各种类型的数据以支持在该电子设备1100的操作,这些数据例如可以包括用于在该电子设备1100上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1102或通过通信组件1105发送。音频组件还包括至少一个扬声器,用于输出音频信号。输入/输出接口1104为处理器1101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1105用于该电子设备1100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(NearField Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件1105可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备1100可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的线程管理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的线程管理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1102,上述程序指令可由电子设备1100的处理器1101执行以完成上述的线程管理方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的线程管理方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (8)

1.一种线程管理方法,其特征在于,所述方法包括:
响应于调用端调用的RPC接口,确定所述RPC接口的接口类型;
确定预设线程池中与所述接口类型对应的目标线程;在所述接口类型为专有接口类型时,所述目标线程为所述预设线程池中具有RPC接口指定的线程ID的专有线程,在所述接口类型为普通接口类型时,所述目标线程为所述预设线程池中任一空闲的普通线程;
将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果;
所述确定所述RPC接口的接口类型,包括:
基于RPC接口与接口类型之间的预设映射关系,确定所述RPC接口的接口类型;
在所述接口类型为专有接口类型的情况下,所述确定预设线程池中与所述接口类型对应的目标线程,包括:
确定所述RPC接口的参数中包括线程ID;
确定所述预设线程池中与所述线程ID对应的第一线程;
在所述第一线程为普通线程的情况下,返回非法调用信号至所述调用端;或者,在所述第一线程为普通线程的情况下,若确定所述RPC接口属于预设的专有任务接口,则将所述第一线程转化为专有线程,并将该专有线程作为所述目标线程;
在所述接口类型为状态开始接口类型的情况下,所述确定预设线程池中与所述接口类型对应的目标线程,包括:
确定所述预设线程池中任一空闲的普通线程;
将所述普通线程转化为专有线程,并将该专有线程作为所述目标线程;
所述方法还包括:
将转化得到的所述专有线程的线程ID发送至所述调用端;
其中,所述专有接口类型指专有任务中除了状态开始任务以及状态结束任务的任务所对应的RPC接口,所述状态开始接口类型指专有任务中状态开始任务所对应的RPC接口,状态结束接口类型指专有任务中状态结束任务所对应的RPC接口。
2.根据权利要求1所述的线程管理方法,其特征在于,所述接口类型为状态结束接口类型,所述确定预设线程池中与所述接口类型对应的目标线程,包括:
确定所述RPC接口的参数中包括线程ID;
确定所述预设线程池中与所述线程ID对应的第一线程;
在所述第一线程为专有线程的情况下,将所述第一线程作为与所述接口类型对应的目标线程。
3.根据权利要求2所述的线程管理方法,其特征在于,所述方法还包括:
在所述第一线程为普通线程的情况下,返回非法调用信号至所述调用端;或者,在所述第一线程为普通线程的情况下,若确定所述RPC接口属于预设的专有任务接口,则将所述第一线程转化为专有线程。
4.根据权利要求2所述的线程管理方法,其特征在于,所述接口类型为状态结束接口类型,所述第一线程为专有线程,所述方法还包括:
在将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果之后,将所述第一线程转化为普通线程。
5.根据权利要求1所述的线程管理方法,其特征在于,在所述确定预设线程池中与所述接口类型对应的目标线程之前,所述方法还包括:
确定所述接口类型非结束RPC调用类型;
所述方法还包括:
在所述接口类型为所述结束RPC调用类型的情况下,确定所述预设线程池中被所述调用端调用过的每一专有线程,并将所述每一专有线程转化为普通线程。
6.一种线程管理装置,其特征在于,所述装置包括:
分类模块,用于响应于调用端调用的RPC接口,确定所述RPC接口的接口类型,以及确定预设线程池中与所述接口类型对应的目标线程;在所述接口类型为专有接口类型时,所述目标线程为所述预设线程池中具有RPC接口指定的线程ID的专有线程,在所述接口类型为普通接口类型时,所述目标线程为所述预设线程池中任一空闲的普通线程;
调度模块,用于将所述RPC接口对应的任务调度到所述目标线程上执行,以得到执行结果;
其中,所述分类模块用于:基于RPC接口与接口类型之间的预设映射关系,确定所述RPC接口的接口类型;
在所述接口类型为专有接口类型的情况下,所述分类模块用于:
确定所述RPC接口的参数中包括线程ID;
确定所述预设线程池中与所述线程ID对应的第一线程;
在所述第一线程为普通线程的情况下,返回非法调用信号至所述调用端;或者,在所述第一线程为普通线程的情况下,若确定所述RPC接口属于预设的专有任务接口,则将所述第一线程转化为专有线程,并将该专有线程作为所述目标线程;
在所述接口类型为状态开始接口类型的情况下,所述分类模块用于:
确定所述预设线程池中任一空闲的普通线程;
将所述普通线程转化为专有线程,并将该专有线程作为所述目标线程;
所述装置还包括发送模块,所述发送模块用于:
将转化得到的所述专有线程的线程ID发送至所述调用端;
其中,所述专有接口类型指专有任务中除了状态开始任务以及状态结束任务的任务所对应的RPC接口,所述状态开始接口类型指专有任务中状态开始任务所对应的RPC接口,状态结束接口类型指专有任务中状态结束任务所对应的RPC接口。
7.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤。
CN202310836301.7A 2023-07-07 2023-07-07 线程管理方法、装置、存储介质及电子设备 Active CN116578404B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310836301.7A CN116578404B (zh) 2023-07-07 2023-07-07 线程管理方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310836301.7A CN116578404B (zh) 2023-07-07 2023-07-07 线程管理方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN116578404A CN116578404A (zh) 2023-08-11
CN116578404B true CN116578404B (zh) 2024-01-19

Family

ID=87538149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310836301.7A Active CN116578404B (zh) 2023-07-07 2023-07-07 线程管理方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116578404B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262564A (zh) * 2011-08-16 2011-11-30 天津市天祥世联网络科技有限公司 视频监控平台***的线程池结构及实现方法
CN109992414A (zh) * 2019-03-12 2019-07-09 平安普惠企业管理有限公司 一种基于线程池的任务处理方法及装置
CN112445615A (zh) * 2020-11-12 2021-03-05 广州海鹚网络科技有限公司 一种线程的调度***、计算机设备和存储介质
CN113157410A (zh) * 2021-03-30 2021-07-23 北京大米科技有限公司 线程池调节方法、装置、存储介质及电子设备
CN115904753A (zh) * 2022-12-05 2023-04-04 杭州安恒信息技术股份有限公司 一种多线程远程接口调用方法、***及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153957A1 (en) * 2008-12-16 2010-06-17 Sensormatic Electronics Corporation System and method for managing thread use in a thread pool
US11340955B2 (en) * 2020-01-02 2022-05-24 International Business Machines Corporation Thread pool management for multiple applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262564A (zh) * 2011-08-16 2011-11-30 天津市天祥世联网络科技有限公司 视频监控平台***的线程池结构及实现方法
CN109992414A (zh) * 2019-03-12 2019-07-09 平安普惠企业管理有限公司 一种基于线程池的任务处理方法及装置
CN112445615A (zh) * 2020-11-12 2021-03-05 广州海鹚网络科技有限公司 一种线程的调度***、计算机设备和存储介质
CN113157410A (zh) * 2021-03-30 2021-07-23 北京大米科技有限公司 线程池调节方法、装置、存储介质及电子设备
CN115904753A (zh) * 2022-12-05 2023-04-04 杭州安恒信息技术股份有限公司 一种多线程远程接口调用方法、***及装置

Also Published As

Publication number Publication date
CN116578404A (zh) 2023-08-11

Similar Documents

Publication Publication Date Title
JP6571277B2 (ja) 端末アプリケーションをロードする方法及び装置
US7788668B2 (en) System and method for implementing distributed priority inheritance
US20210185111A1 (en) Data processing methods, electronic devices, and storage media
CN111400000B (zh) 网络请求处理方法、装置、设备和存储介质
CN1710535A (zh) 一种gis应用***及其开发方法
WO2022257247A1 (zh) 数据处理方法、装置及计算机可读存储介质
EP3008604A1 (en) Unified extensible firmware interface (uefi) driver and protocol
WO2023185044A1 (zh) 一种数据处理方法、装置、电子设备和存储介质
US10523746B2 (en) Coexistence of a synchronous architecture and an asynchronous architecture in a server
CN114610404A (zh) 基于应用框架的组件调用方法、装置和计算机设备
CN116795647A (zh) 一种数据库异构资源管理与调度方法、装置、设备及介质
CN111736809A (zh) 分布式机器人集群网络管理框架及其实现方法
CN107368498B (zh) 优化MySQL悲观锁的锁等待超时时间的方法及装置
CN116578404B (zh) 线程管理方法、装置、存储介质及电子设备
US8473954B2 (en) Executing operations via asynchronous programming model
US11755297B2 (en) Compiling monoglot function compositions into a single entity
CN115114022A (zh) 对gpu资源进行使用的方法、***、设备及介质
CN113296898B (zh) 异步任务处理方法、装置、电子设备和存储介质
EP3783484B1 (en) Data processing method and computer device
CN109669793B (zh) 中间件进程内对象调用方法
JPWO2009131167A1 (ja) マルチプロセッサ制御装置、その方法及びそのプログラム
JP2010108504A (ja) ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法
CN112041817A (zh) 用于管理借助于加速器装置的硬件加速的请求的方法和节点
WO2024037553A1 (zh) 一种生命周期调度的方法、装置及电子设备
US10419532B2 (en) Asynchronous connection handling in a multi-threaded server

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