一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种线程调用方法和装置与流程

2022-05-08 05:40:08 来源:中国专利 TAG:


1.本说明书实施例属于计算机技术领域,尤其涉及一种线程调用方法和装置。


背景技术:

2.在计算设备中经常包括进程,例如计算设备为服务平台或区块链平台,平台进程中提供的不同的服务对应不同的线程。传统本地同步rpc的实现方法为:被调用线程睡眠等待调用信息;调用线程通过向被调用线程发送调用信息,唤醒被调用线程,然后再等待被调用线程的信息返回;被调用线程在执行完rpc要求的功能后,再向调用线程发送rpc完成信息,唤醒调用线程,然后继续睡眠等待新的调用请求。


技术实现要素:

3.本发明的目的在于提供一种线程调用方案,以使得通过相同的处理单元执行调用线程和被调用线程,减少了线程唤醒成本。
4.本说明书第一方面提供一种线程调用方法,包括:
5.响应于第一线程对第二线程的调用请求,唤醒睡眠的第二线程;
6.使得所述第一线程睡眠以等待所述第二线程的调用返回;
7.使得运行所述第一线程的处理单元运行所述第二线程。
8.其中,所述处理单元例如为处理器核或者其他类型的独立的处理单元。
9.本说明书第二方面提供一种线程调用装置,包括:
10.唤醒单元,用于响应于第一线程对第二线程的调用请求,唤醒睡眠的第二线程;
11.睡眠单元,用于使得所述第一线程睡眠以等待所述第二线程的调用返回;
12.运行单元,用于使得运行所述第一线程的处理单元运行所述第二线程。
13.本说明书第三方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
14.本说明书第四方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
15.通过本说明书实施例提供的方案,当第一线程调用第二线程而唤醒第二线程时,使用运行第一线程的处理单元(例如处理器核)继续运行第二线程,减少了跨处理器的操作和通信,减少了唤醒成本。
附图说明
16.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
17.图1为本说明书一实施例中的主机100的结构示意图;
18.图2为本说明书一实施例中的一种线程调用方法的流程图;
19.图3为本说明书一实施例中的一种线程调用返回方法的流程图;
20.图4为本说明书一实施例中的一种线程调用装置。
具体实施方式
21.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
22.图1为本说明书一实施例中的主机100的结构示意图。如图1所示,主机100中包括处理器10和内存20。可以理解,主机100中还包括其他运行程序所需要的硬件单元,如用于永久性存储程序的存储介质(例如硬盘等),图1中未示出。其中,处理器10可以为单核处理器或多核处理器,图1中示意示出处理器10为多核处理器,包括cpu11、cpu12和cpu13三个核或者三个处理单元。主机100中可运行进程。进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。也就是说,进程是计算机中通过由处理器(cpu)执行代码而进行的一个过程或者一个任务。例如,当主机100作为服务器接收到用户的服务请求之后,主机100创建一个进程来提供用户所请求的服务(例如计算服务、存储服务等)。在处理器10中运行进程时,当需要调用操作系统提供的功能(或者接口)时,可从硬盘读取操作系统的部分代码缓存到内存20中,从而处理器10可读取该部分代码以进行对操作系统的运行。
23.一个进程可包含若干线程(thread),一个进程中的多个线程可以允许进程同时做多个操作,例如一个线程向磁盘写入文件,另一个线程接收用户的信息等。在主机100例如为平台服务器或者区块链节点,如图1所示,上述进程可以为平台进程,平台进程中可包括作为主线程的线程21和提供具体服务的任务线程。为了同时对多个用户提供相同的服务,可在该进程中包括用于提供相同服务的多个任务线程,例如用于提供某种特定计算服务的线程221和线程223,该线程221和线程223可排列在任务线程队列中。任务线程队列为操作系统与线程调用接口对应地创建的用于记录被调用线程的线程队列。线程21可通过远程过程调用(remote procedure call,rpc)的方式调用线程221或者线程223以向用户提供所述计算服务。
24.传统本地同步rpc的实现方法为:被调用线程睡眠等待调用信息;调用线程通过向被调用线程发送调用信息,唤醒被调用线程,然后睡眠等待被调用线程的信息返回;被调用线程在执行完rpc要求的功能后,再向调用线程发送rpc完成信息,唤醒调用线程,然后继续睡眠等待新的调用请求。在这个过程中,涉及到两次任务唤醒。“任务唤醒”涉及到了处理器间中断和任务的调度/抢先,影响因素较多,在云环境下还涉及到了云平台对于虚拟机的空闲机制的实现方式(被唤醒者所在vcpu可能因为之前空闲,被虚拟机监控器调度下去了;“唤醒任务”执行时,就需要唤醒被唤醒者所在的vcpu),进一步恶化了虚拟机内部本地同步rpc的性能。从而,唤醒线程和被唤醒线程有可能由不同的cpu执行。例如,如图1所示,例如线程21由cpu11执行,cpu11在执行线程21中对线程221的调用之后,由于主机100中的调度机制,有可能使得由cpu12来执行线程221。当跨cpu进行任务唤醒时,涉及到处理器之间的
通信,具有较大开销
25.因此,在当前的操作系统实现中,无法高效实现调用线程和被调用线程在同一个cpu上运行:若将调用线程和被调用线程共同绑定到一个cpu上,虽然实现了二者在同一个cpu上运行,但影响了调度器的负载均衡能力。
26.本说明书一实施例中,在操作系统中设置特定的线程调用接口,当线程21使用该线程调用接口调用线程221时,该线程调用接口的执行使得执行线程21的cpu11继续执行线程221,减少了唤醒成本,提高了系统效率。
27.图2为本说明书一实施例中的一种线程调用方法的流程图,所述方法例如由图1中的主机100执行,包括:
28.步骤s201,响应于第一线程对第二线程的调用请求,唤醒睡眠的第二线程;
29.步骤s203,使得第一线程睡眠以等待第二线程的调用返回;
30.步骤s205,指定运行第一线程的处理单元运行第二线程。
31.下文将详细描述图2所示方法中的各个步骤。
32.首先,在步骤s201,响应于第一线程对第二线程的调用请求,唤醒睡眠的第二线程。
33.如上文所述,在操作系统中可提供特定的线程调用接口,以用于实现线程间的调用。其中,第一线程为调用线程,其例如为进程中的平台线程(如图1中的线程21),第二线程为被调用线程,其例如为进程中的任务线程(如图1中的线程221),下文中将以线程21作为第一线程的示例、以线程221作为第二线程的示例进行描述。
34.线程21可通过调用该接口实现对线程221的调用。该线程调用接口还可以用于将多个任务线程睡眠到任务线程队列中。例如,线程221和线程223可以以空返回的方式调用该线程调用接口,以睡眠到任务线程队列中。例如,线程221在抢到cpu之后,获取特定任务(即线程调用接口对应的任务),然后使得cpu执行其调用的线程调用接口。cpu在开始执行线程调用接口之后,可根据进程的上下文信息确定线程221为被调用线程,并且可确定该对线程调用接口的调用为空返回调用,即不需要对其他线程返回信息,从而cpu11将线程221睡眠到与该特定任务对应的任务线程队列中。线程223可类似地通过调用该线程调用接口睡眠到任务线程队列中。
35.可以理解,在一个进程中可能预设了多个不同的任务,因此,对于不同的任务可设置不同的线程调用接口,例如,对于任务1和任务2分别设置接口1和接口2。其中,接口1可用于将与任务1对应的多个线程睡眠到与任务1对应的队列1中,并用于实现平台线程对队列1中的线程的调用。类似地,接口2可用于将与任务2对应的多个线程睡眠到与任务2对应的队列2中,并用于实现平台线程对队列2中的线程的调用。
36.继续参考图1,当线程21希望调用任务线程队列中的任务线程时,线程21可通过线程调用接口来调用一个任务线程,线程21在调用线程调用接口时可对接口传入参数以指示线程21为调用线程,或者线程21可在进程上下文中记录线程21为调用线程。线程21抢占到cpu11之后,cpu11开始执行线程21。当cpu11执行到线程21中对线程调用接口的调用时,cpu11首先可根据传入参数或者上下文信息判断线程21为调用线程,然后,cpu11获取与该线程调用接口对应的任务线程队列,然后从该队列中获取任一个任务线程(例如线程221)。
37.在步骤s203,使得第一线程睡眠以等待第二线程的调用返回。
38.cpu11在唤醒线程221之后,将线程21睡眠到线程21的私有队列中,即在该私有队列中记录线程21,以等待线程221的调用返回,也就是说,线程221的调用返回将使得cpu11唤醒线程21。可以理解,这里虽然描述了cpu11在唤醒线程221之后睡眠线程21,本说明书实施例不限于此。例如,cpu11在开始执行线程调用接口时,当判断线程21为调用线程之后,可以首先将线程21睡眠到私有队列中,然后再到任务线程队列中唤醒线程221。
39.在步骤s205,指定运行第一形成的处理单元运行第二线程。
40.cpu11在唤醒线程221之后,根据线程调用接口内的代码指定cpu11运行线程221,然后退出对线程调用接口的执行,即线程调用接口对应的系统线程释放cpu11,以使得cpu11可以继续运行线程221。具体是,该系统线程中可调用用于为被唤醒的线程221指定cpu的系统接口来指定cpu。cpu11在执行该系统接口之后,首先判断所唤醒的线程(例如线程221)是与本技术实施例中的线程调用接口对应还是与普通的调用接口对应。例如,在本技术实施例中的线程调用接口可设置在将任务线程睡眠到任务线程队列中之后,对该任务线程增加标记,以指示该任务线程与本技术实施例中的线程调用接口对应。当cpu11判断线程221对应于图1中的线程调用接口时,指定cpu11后续继续执行线程221。当cpu11判断所唤醒的线程对应于普通的调用接口时,则根据原有的算法指定将要执行该线程的cpu,例如,指定上次执行该唤醒的线程的cpu继续执行该线程,或者根据负载均衡指定cpu等。
41.cpu11在退出对线程调用接口的执行之后,根据通过上述用于指定cpu的系统接口的设置,继续执行所唤醒的线程221,从而实现了通过同一个cpu执行线程21和线程21所调用的线程221。
42.cpu11在开始运行线程221之后,当线程221需要对线程21返回应答时,可通过调用线程调用接口对线程21返回应答。
43.图3为本说明书一实施例中的一种线程调用返回方法的流程图,所述方法例如由图1中的主机100执行,包括:
44.步骤s301,响应于第二线程对第一线程的调用返回请求,唤醒睡眠的第一线程;
45.步骤s303,使得第二线程睡眠;
46.步骤s305,指定运行第二线程的处理单元运行第一线程。
47.下文将详细描述图3所示的各个步骤。
48.首先,在步骤s301,响应于第二线程对第一线程的调用返回请求,唤醒睡眠的第一线程。
49.类似地,线程221可以通过以对线程21的应答为传入参数调用线程调用接口,以向系统发送调用返回请求,该传入参数中例如包括线程21的标识和对线程21的应答。cpu11在运行线程221之后,在运行到线程调用接口时,根据传入参数获取线程21所睡眠的私有队列,唤醒该私有队列中的线程21。
50.在步骤s303,使得第二线程睡眠。
51.具体是,参考图1,cpu11将线程221睡眠到与该线程调用接口对应的任务线程队列中,以等待平台线程对该线程的下次调用。
52.在步骤s305,指定运行第二线程的处理单元运行第一线程。
53.与上文类似地,cpu11在运行线程调用接口时,可确定线程21与线程调用接口对应,因此,指定cpu11用于继续执行线程21,然后线程调用接口对应的系统线程释放cpu11,
integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
68.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
69.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本技术不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
70.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
71.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
72.本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
73.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
74.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
75.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
76.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
77.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
78.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
79.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
80.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
81.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献