CN105308566B - 请求式可扩展定时器轮 - Google Patents
请求式可扩展定时器轮 Download PDFInfo
- Publication number
- CN105308566B CN105308566B CN201380075130.5A CN201380075130A CN105308566B CN 105308566 B CN105308566 B CN 105308566B CN 201380075130 A CN201380075130 A CN 201380075130A CN 105308566 B CN105308566 B CN 105308566B
- Authority
- CN
- China
- Prior art keywords
- timing device
- timer
- device wheel
- expansible
- time slot
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Measurement Of Unknown Time Intervals (AREA)
- Mobile Radio Communication Systems (AREA)
- Power Sources (AREA)
Abstract
各个实施例使能定时器轮的请求式扩展。一些实施例至少部分基于定时器轮是否具有任何相关联的活动定时器来动态启动和停止定时器轮。在一些情况下,当所有相关联活动定时器已被服务时,暂停定时器轮。替代地或附加地,在将一个或多个需要服务的活动定时器关联到定时器轮时,重新激活定时器轮。各个实施例使能在不使用与定时器轮相关联的全局锁的情况下将(多个)定时器添加到定时器轮和/或与定时器轮相关联的各个时隙以及从定时器轮和/或与定时器轮相关联的各个时隙移除(多个)定时器。
Description
背景技术
计算机设备通常使用定时器作为基本处理工具。例如,定时器可用于测量其进行任务以完成处理花费多久,在预定量时间之后中断被阻止的任务(例如超时定时器),唤醒(多个)进程等。随着计算设备(以及它们运行的应用)变得越来越复杂,定时器的使用通常会增加。有效处理系统上运行的多个定时器的一个方式是通过使用定时器轮。
除了别的之外,定时器轮将定时器分组到将被共同处理的不同时隙中。有时当将定时器添加到(多个)时隙和从其移除时,定时器上的全局锁可用作调节定时器轮的状态的方式。当定时器轮前进到轮上的特定时隙时,服务在该相关联时隙中的定时器。例如,在每个时隙的开始处,定时器轮算法唤醒,寻找在相关联时隙中包含的任何相关联定时器,潜在地服务位于该时隙中的至少一些定时器,并且然后阻止和/或等待下一时隙的开始。该进程可无限期地自己重复,直到定时器轮被删除和/或移除。连续唤醒和检查需要服务的任何定时器的定时器轮的进程利用中央处理单元(CPU)的时间和/或处理能力,而不管需要服务的定时器是否存在于定时器轮的相关联时隙中以及定时器轮的相关联时隙。这转而可影响相关联计算设备的电池寿命。当定时器轮包含定时器时,这些资源被引导到活动应用和/或处理。然而,当定时器轮没有任何定时器时,唤醒每个时隙并且检查不存在的定时器的重复本性可非必要地耗尽这些资源。此外,使用具有多个定时器的定时器轮上的全局锁可有时由于全局锁的延迟采集而引入性能方面的瓶颈和/或减速。
发明内容
该发明内容提供用于以简化形式介绍一系列概念,下文在具体实施方式中进一步描述该概念。该发明内容不旨在标识所主张的主题的关键特征或必要特征。
各个实施例使能定时器轮的请求式扩展。一些实施例至少部分基于定时器轮是否具有任何相关联的活动定时器来动态启动和停止定时器轮。在一些情况下,当所有相关联活动定时器已被服务时,暂停定时器轮。替代地或附加地,在将一个或多个需要服务的活动定时器关联到定时器轮时,重新激活定时器轮。各个实施例使能在不使用与定时器轮相关联的全局锁的情况下将(多个)定时器添加到定时器轮和/或与定时器轮相关联的各个时隙以及从定时器轮和/或与定时器轮相关联的各个时隙移除(多个)定时器。
附图说明
参考附图描述详细说明书。在图中,附图标记的(多个)最左边数字标识附图标记首先出现的图。在说明书和图中的不同实例中使用相同附图标记可指示相似或相同项。
图1是根据一个或多个实施例的环境计算设备的图示。
图2是根据一个或多个实施例的示例操作环境的图示。
图3是根据一个或多个实施例的示例定时器轮图的图示。
图4是根据一个或多个实施例的示例定时器轮图的图示。
图5图示根据一个或多个实施例的流程图。
图6图示可用于实施本文描述的各个实施例的示例计算设备。
具体实施方式
概要
各个实施例使能定时器轮的请求式扩展。可针对一个或多个应用来实例化定时器轮。可然后至少部分基于定时器轮是否具有任何相关联的活动定时器来动态启动和停止实例化的定时器轮。在一些情况下,定时器轮可被配置为连续处理时隙,以及时隙的任何相关联活动定时器,同时定时器轮包含未服务的活动定时器。在服务所有相关联活动定时器后,一些实施例暂停实例化的定时器轮的执行,直到将活动定时器添加到定时器轮和/或删除定时器轮。定时器轮可然后被重新激活并且配置为连续执行,直到所有相关联活动定时器再次被服务。此外,可在不使用与定时器轮相关联的全局锁的情况下将一个或多个定时器添加到定时器轮和从定时器轮移除一个或多个定时器,因此使能与定时器轮相关联的更高效和可扩展的处理。
在接着的讨论中,提供题为“示例操作环境”的章节,并且该章节描述其中可采用一个或多个实施例的一个环境。接着此,题为“请求式可扩展定时器轮”的章节描述了根据一个或多个实施例动态启动和停止定时器轮。最后,题为“示例设备”的章节描述可用于实施一个或多个实施例的示例设备。
已提供了将在下文描述的各个实施例的概要,现在考虑其中可实施一个或多个实施例的示例操作环境。
示例操作环境
图1是可操作为采用在本文档中描述的技术的示例计算设备的图示。图示的示例包括可以以各种方式配置的计算设备102。例如,计算设备102可配置为常规计算机(例如桌面个人计算机、膝上型计算机等)、移动站、娱乐应用、与电视机通信耦合的机顶盒、无线电话、上网本、游戏控制台、手持设备等。因此,计算设备102的范围可以从具有大量存储器和处理器资源的全资源设备(例如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如常规机顶盒、手持游戏控制台)。计算设备102还包括使计算设备102执行如下文描述的一个或多个操作的软件。
除了别的之外,计算设备102包括(多个)处理器核104。(多个)处理器核104表示可执行机器级处理器指令(例如分支、跳转、添加、减去、移动数据等)的功能性。替代地或附加地,(多个)处理器核104被配置为与和计算设备102相关联的其它处理器核并行地执行处理器指令。因此,计算设备102的范围可以从单处理器计算设备到多核/多处理器计算设备。
计算设备102还包括一个或多个计算机可读存储介质106。计算机可读存储介质可通过示例而非限制的方式包括,通常与计算设备相关联的所有形式的易失和非易失存储器和/或存储介质。这样的介质可包括ROM、RAM、闪存、硬盘、可移除介质等。除了别的之外,计算机可读存储介质106包括操作系统108、(多个)应用110和(多个)可扩展定时器轮模块112。尽管被图示为单独模块,但是应认识到,这些模块可被实施为单独模块、组合模块或其任意组合,而不偏离所主张的主题的范围。例如,在一些实施例中,(多个)可扩展定时器轮模块112可被实施为操作系统108和/或(多个)应用110的子模块。
除了别的之外,操作系统(OS)108表示被配置为管理计算设备102的(多个)软件和/或硬件资源的功能性。替代地或附加地,操作系统108可提供由(多个)应用110和/或可扩展定时器轮模块112利用的功能性的一个或多个库。这可以以任何适当方式完成,例如一个模块或一齐工作的多个模块。
(多个)应用110表示包括可由(多个)处理器核104执行的指令的一个或多个应用。(多个)应用110可包括具有与计算设备102的用户交互的功能性的(多个)高级别应用,可包括与软件线程相关联的处理器核指令,和/或可包括与和计算设备102的低级别和/或初步方面交互的(多个)低级别应用(例如驱动器软件、中断服务例程等)相关联的指令。替代地或附加地,(多个)应用110可利用由操作系统108和/或(多个)可扩展定时器轮模块112提供的功能性。因此,(多个)应用110可包括大范围的(多个)应用。
(多个)可扩展定时器轮模块112表示被配置为使能使用动态定时器轮处理多个定时器的功能性。除了别的之外,动态定时器轮可被配置为连续执行和/或使能服务与动态定时器轮相关联的活动定时器。作为其连续执行的部分,动态定时器轮可周期性以预定义时间间隔唤醒以标识和/或处理(多个)活动定时器。在一些实施例中,当与动态定时器轮相关联的所有活动定时器已被服务时,动态定时器轮暂停其执行。此外,动态定时器轮可在一些情况下响应于一个或多个定时器到定时器轮的添加而重新激活其执行。(多个)可扩展定时器轮模块112可以以任何适当方式实施。例如,(多个)可扩展定时器轮模块112可将动态定时器轮实施为散列定时器轮、圆形阵列定时器轮、层次定时轮等。
图2图示了将计算设备102大体示为在其中多个设备通过中央计算设备互连的环境中实施的示例系统200。中央计算设备可以是多个设备本地的,或可以定位为远离多个设备。在一个实施例中,中央计算设备是“云”服务器场,其包括经由网络或互联网或其它手段连接到多个设备的一个或多个服务器计算机。
在一个实施例中,该互连架构使能跨越多个设备输送功能性以提供公共和无缝的体验给多个设备的用户。多个设备中的每个可具有不同物理要求和能力,并且中央计算设备使用平台来使能向设备输送针对设备定制并且还针对所有设备公共的体验。在一个实施例中,建立目标设备的“类”,并且针对设备的共同类来定制体验。设备的类可通过设备的物理特征或用途或其它公共特性来定义。例如,如之前描述的,计算设备102可以以各种不同方式来配置,例如用于移动设备202、计算机204和电视206用途。这些配置中的每个具有大体对应的屏幕尺寸并且因此计算设备102可配置为该示例系统200中的这些设备类之一。例如,计算设备102可采取移动设备202类设备,其包括移动电话、音乐播放器、游戏设备等。计算设备还可采取计算机204类设备,其包括个人计算机、膝上型计算机、上网本等。电视206配置包括涉及日常环境中的显示的设备配置,例如电视、机顶盒、游戏控制台等。因此,本文描述的技术可以通过计算机设备102的这些各种配置来支持,并且不限于在下文章节中描述的具体示例。如在此图示的,计算设备102可包括如上文和下文描述的(多个)可扩展定时器轮模块112。
在一些实施例中,(多个)服务器208包括“云”功能性。在此,云210被图示为包括用于web服务214的平台212。平台212将云210的硬件(例如服务器)和软件资源的底层功能性抽象化,并且因此可用作“云操作系统”。例如,平台212可将用于连接计算设备102和其它计算设备的资源抽象化。平台212还可用于抽象化用于向经由平台212实施的web服务214的遇到需求提供对应级别的扩展的资源扩展。还设想到各种其它示例,例如在服务器场中的服务器的负载平衡,保护以防恶意方(例如垃圾邮件、病毒和其它恶意软件)等。因此,云210被包括为涉及经由互联网或其它网络使计算设备102可获得的软件和硬件资源的策略的一部分。
通常,本文描述的任何功能可使用软件、固件、硬件(例如固定逻辑电路)、手动处理或这些实施方式的组合来实施。如本文使用的术语“模块”、“功能性”和“逻辑”通常表示软件、固件、硬件或其组合。在软件实施方式的情况下,模块、功能性或逻辑表示在处理器上或由处理器(例如CPU或多个CPU)运行时执行规定任务的程序代码。程序代码可存储在一个或多个计算机可读存储器设备中。下文描述的手势技术的特征是独立于平台的,这意味着该技术可在具有各种处理器的各种商用计算平台上实施。
已描述了其中可利用各种实施例的示例操作环境,现在考虑根据一个或多个实施例的请求式可扩展定时器轮的讨论。
请求式可扩展定时器轮
定时器轮可由计算设备用作高效处理多个定时器的方式。除了别的之外,将定时器分组在一起可通过在定时器分组上分配设定量的开销,而不是招致每个定时器的相同设定开销,来减小处理开销。为了进一步说明,考虑图3,其包括示例定时器轮302。在此,定时器轮302具有十二个单独时隙,范围从0-11。应当认识到,值十二是任意值,并且在此仅仅用于讨论目的。可利用任何适当数量的时隙,而不偏离所主张主题的精神。此外,假定每个时隙表示4秒的时间单位(例如定时器轮302的一个完整旋转花费12×4=48秒)。然而,如在多个时隙的情况下,应当认识到,可使用用于时隙的任何适当长度的时间,例如1毫秒、100毫秒、1秒、30秒等。
定时器轮302在此被图示为圆形结构和/或圆形阵列。该圆形结构旨在示出定时器轮302的连续本质。例如,如上文讨论的,定时器轮302的完整旋转在48秒内完成。在达到完整旋转的末端后,定时器轮302前进到最后的时隙(在此是时隙11)到开始的时隙(时隙0)。该进程可在一些情况下无限期重复自己,直到定时器轮302被移除、毁坏和/或删除。
图3还包括指针304,其用于象征性指示定时器轮302的哪个时隙是活动时隙。然而,可以以任何适当方式管理对活动时隙的标识,例如经由索引值、阵列指针等。在此,指针304指向时隙0,因此指示时隙0是当前活动时隙。随着时间前进,活动时隙转变为下一时隙。象征性地,这将被指示为指针304前进到下一时隙(例如定时器轮维持固定并且指针顺时针旋转,或指针维持固定并且定时器轮逆时针旋转)。然而,该前进可以以任何适当方式来指示,例如通过索引值递增,阵列指针递增等。在该示例中,定时器轮302使其活动时隙从时隙0前进到时隙1,然后从时隙1前进到时隙2并且以此类推。如上文描述的,当活动时隙是时隙11时,定时器轮302从时隙11转变到时隙0,并且该进程重复。
前进到新的活动时隙导致处理和/或服务与活动时隙相关联的任何定时器。这可包括调用与定时器相关联的任何回调函数,和/或将相关联的回调函数传递到单独任务以供执行。此外,可将多个定时器分配和/或添加到时隙。因此,在一些情况下,多个时隙具有分配给它们的多个定时器。考虑包括3个单独定时器(在此被指示为定时器306)的时隙0。当时隙0变为活动时隙时,定时器306被服务和/或处理。在一些情况下,定时器轮302服务定时器306中的每个定时器。在此,定时器306表示需要服务的时隙0中的任何活动定时器。这可暗示与时隙0相关联的所有定时器或与时隙0相关联的仅一些定时器。应当认识和理解的是,时隙0可具有与其关联的在该时间点不需要服务(而是在时隙0的随后通过)的附加定时器。替代地或附加地,定时器轮302可将定时器的服务和/或处理传递给不同任务。在该示例中,定时器轮302的时隙4、5和9分别包括定时器308、310和312。因此,随着定时器轮302前进到相关联时隙,相关联定时器被服务(例如当定时器轮302转变到时隙4中时,定时器308被服务,当定时器轮302转变到时隙5中时,定时器310被服务等)。尽管每个时隙被图示为具有特定分组大小的定时器(例如2个定时器、3个定时器、5个定时器),但是应当认识和理解,可将任何适当数量的定时器进行分组,而不偏离所主张的主题的范围。作为转变到时隙中的部分,一些实施例将锁定对正服务的时隙的访问,直到时隙时间已经期满和/或所有定时器已被服务。
如果定时器轮302已经完成服务时隙的相关联定时器(和/或促进时隙的相关联定时器的服务),但是未到转变到下一时隙的时间,则定时器轮302暂时暂停自己,直到下一时隙为止。例如,在服务与时隙0相关联的定时器306之后,定时器轮302暂时转变到睡眠模式,在此由转变314指示的。此外,定时器轮302暂停持续“时间单位”量的时间,这意味着一般地指示直到下一时隙开始为止的时间量。在完成其“时间单位”暂停和/或睡眠时段之后,定时器轮302恢复其活动并且转变到下一时隙,在此被图示为转变316。因此,在该示例中,定时器轮302首先将时隙0标识为活动时隙,服务(和/或促进服务)定时器306,并且然后转变到睡眠状态,直到时隙1开始时的时间点。当时隙1变为活动时隙时,定时器轮302恢复其执行,并且搜索与活动时隙相关联的任何定时器。在一些情况下,该进程重复,直到定时器轮302终止。尽管以该方式对定时器进行分组可更高效地对多个定时器做出处理,但是定时器轮的连续本质有时可引起不必要的处理。
考虑定时器轮服务所有相关联定时器并且变成没有任何定时器。由于定时器轮的连续本质,其将在每个时隙开始时唤醒并且搜索任何相关联定时器。然而,将未找到定时器,并且定时器将转变为睡眠模式,直到下一时隙开始。因此,即使没有待服务的定时器,定时器轮也将继续唤醒,检查定时器,并且然后转变回睡眠。该不必要处理可能不仅花费有价值的CPU处理时间,而且还附加地耗尽运行定时器轮的设备的有价值电池寿命。
各个实施例使能定时器轮的请求式扩展。例如,可针对一个或多个应用实例化定时器轮。可然后至少部分基于定时器轮是否具有任何相关联活动定时器来动态启动和停止实例化的定时器轮。替代地或附加地,可在不使用与定时器轮相关联的全局锁的情况下将定时器添加到定时器轮。考虑图4,其图示示例定时器轮402。如在图3中的定时器轮302的情况下,定时器轮402是包含12个时隙(分别标注为0-11)的圆形定时器轮。类似地,图4包括指针404,其用于标识哪个时隙是当前活动时隙(在此是时隙0)。
当定时器轮402包含一个或多个定时器关联时,其被配置为以与上文描述的定时器轮302类似的方式运行(例如周期性地在每个时隙处唤醒以处理和/或服务该时隙的任何相关联定时器)。然而,在此,定时器轮402没有任何相关联的定时器,因此暗示着每个时隙已被“清空”。定时器轮和/或时隙可以以任何适当方式管理其相关联定时器。在一些实施例中,定时器轮402维护每个时隙的定时器的一个或多个内部列表。内部列表可以以任何适当方式解释与相应时隙相关联的每个定时器,例如通过针对每个定时器的引用和/或指针。随着定时器被服务,可从内部列表移除该引用。替代地或附加地,定时器轮402可维护活动定时器的计数,如下文进一步讨论的。
在一些实施例中,定时器轮402维护定时器何时被分配和/或添加到定时器轮,以及定时器何时从定时器轮移除和/或与定时器轮分离的认知。例如,定时器轮402可维护跟踪定时器何时被添加和从定时器轮402移除的原子计数器。在一些情况下,可存在多个原子计数器,其中每个原子计数器与一时隙相关联(例如定时器轮的每个时隙具有唯一相关联的原子计数器)。除了别的之外,原子计数器使能对计数器的“锁定的”读和写。在多线程环境中,多个任务可潜在地尝试同时访问计数器。原子计数器通过在(实质上)单个执行中实施读和/或写动作来防止值在读或写的中途改变。这确保计数器值在读或写的中途不被修改(这转而减轻计算设备上的潜在竞争条件和/或锁定)。在该示例中,当定时器被添加到定时轮402的任何时隙时,相关联的原子计数器递增。类似地,当定时器被服务和/或定时器从定时轮402的任何时隙移除时,原子计数器递减。
在定时器轮402已完成服务与活动时隙相关联的定时器之后,一些实施例检查相关联的计数器(例如原子计数器)来确定定时器轮402是否包含任何定时器,在此被图示为定时器轮402转变到判定状态406。如果计数器反映定时器轮402包含需要(最后的)服务的定时器,则定时器轮402然后转变到周期性的睡眠状态408。在该图示中,周期性睡眠状态408表示其中定时器轮402持续如上文进一步讨论的“时间单元”量时间暂时暂停其执行的状态。周期性睡眠状态408由于定时器轮402的连续本质而为“周期性”的,还如上文讨论的那样。然而,如果判定状态406确定定时器轮402没有需要(最后的)服务的定时器,则定时器轮402相反转变到无限期睡眠状态410。
无限期睡眠状态410表示其中定时器轮402将其执行暂停无限期时间量的状态。因为已确定没有与定时器轮402相关联的定时器,所以对周期性地唤醒以检查和/或服务每个时隙上的定时器的需要不再存在。因此,可通过暂停非必要活动来保存执行的计算设备的处理能力和/或电池寿命。在一些情况下,定时器轮402可无限期地和/或直到新定时器被添加为止暂停其周期性活动。在此的术语“无限期”用于描述未知量的时间。例如,其可暗示10秒、1小时等。在一些实施例中,将新的定时器添加到定时器轮402的时隙可再激活定时器轮402和/或重启从时隙到时隙的移动并且检查定时器的周期性进程。因为可在定时器轮402进入无限期睡眠状态410之后的任意时间点添加新的定时器,所以不可确定的是无限期睡眠状态410可能持续多久。因此,“无限期”暗示着具有宽范围的可能性的未知量时间。
为了进一步说明,考虑图5,其图示了描述根据一个或多个实施例的方法中的步骤的流程图。该方法可通过任何适当硬件、软件、固件或其组合来执行。在至少一些实施例中,可通过在一个或多个计算设备上执行的一个或多个适当配置的软件模块(例如图1的可扩展定时器轮模块112)来实施方法的方面。
步骤500实例化被配置为管理多个定时器的可扩展定时器轮。在此,术语“可扩展”用于指示定时器轮的执行的可扩展本质。如上文描述的,可至少部分基于可扩展定时器轮是否具有任何需要服务的相关联定时器来基于请求启动和停止可扩展定时器轮。在一些实施例中,可扩展定时器轮包含定时器被分组到的多个时隙和/或存储段(bucket)。替代地或附加地,如上文进一步描述的,可扩展定时器轮可被配置为随着其转变通过每个时隙周期性地暂停和启动自己。
步骤502确定可扩展定时器轮是否没有定时器。例如,原子计数器可用于监测定时器何时被添加到可扩展定时器轮以及定时器何时从可扩展定时器轮移除。
响应于确定可扩展定时器轮没有定时器,步骤504暂停可扩展定时器轮的周期性活动。如上文进一步描述的,这可包括与暂停和唤醒与服务每个时隙有关的可扩展定时器轮相关联的任何周期性活动。替代地或附加地,可扩展定时器轮可暂停所有活动持续无限期量的时间。
响应于添加至少一个定时器到所述空闲可扩展定时器轮,步骤506重新激活可扩展定时器轮的周期性活动。这可包括任何适当类型的活动,例如与监测和可扩展定时器轮相关联的任何时隙和/或服务定时器相关联的周期性活动。
已经考虑了请求式可扩展定时器轮的讨论,现在考虑可用于实施上文描述的实施例的示例设备的讨论。
示例设备
图6图示了可实施为如参考图1和2描述的任何类型的便携和/或计算机设备以实施本文描述的请求式可扩展定时器轮的实施例的示例设备600的各个部件。设备600包括使能设备数据604(例如已接收的数据,正接收的数据,规划用于广播的数据,数据的数据包等)的有线和/或无线通信的通信设备602。设备数据604或其它设备内容可包括设备的配置设置,设备上存储的媒体内容和/或与设备的用户相关联的信息。设备600上存储的媒体内容可包括任何类型的音频、视频和/或图像数据。设备600包括一个或多个数据输入606,经由数据输入606可接收任何类型的数据、媒体内容和/或输入,如用户可选择输入、消息、音乐、电视媒体内容、记录的视频内容、以及从任何内容和/或数据源接收的任何其他类型的音频、视频和/或图像数据。
设备600还包括通信接口608,其可实施为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器中的任一个或多个,以及实施为任何其他类型的通信接口。通信接口608提供在设备600和通信网络之间的连接和/或通信链路,其他电子、计算和通信设备通过其与设备600通信。
设备600包括一个或多个处理器610(例如微处理器、控制器等中的任意),其处理各个计算机可执行或可读指令以控制设备600的操作和实施上文描述的实施例。替代地或附加地,设备600可利用硬件、固件或结合大体以612标识的处理和控制电路实施的固定逻辑电路中的任意一个或其组合来实施。尽管未示出,但是设备600可包括耦合设备内的各个部件的系统总线或数据传输系统。系统总线可包括不同总线结构中的任意一个或其组合,例如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任意的处理器或本地总线。
设备600还包括计算机可读介质614,例如一个或多个存储器部件,其示例包括随机存取存储器(RAM)、非易失存储器(例如只读存储器(ROM)、闪存、EPROM、EEPROM等中的任意一个或多个)和盘存储设备。盘存储设备可被实施为任意类型的磁或光学存储设备,例如硬盘驱动器、可记录和/或可再写致密盘(CD)、任何类型的数字通用盘(DVD)等。设备600还可包括大容量存储介质设备616。
计算机可读介质614提供数据存储机构来存储设备数据604以及各个设备应用618和与设备600的操作方面有关的任何其他类型的信息和/或数据。例如,操作系统620可利用计算机可读介质614维持为计算机应用并且在处理器610上执行。设备应用618可包括设备管理器(例如控制应用、软件应用、信号处理和控制模块、特定设备原生的代码、特定设备的硬件抽象层等),以及可包括web浏览器、图像处理应用、通信应用(例如即时消息应用)、文字处理应用和各种其它不同应用的其它应用。设备应用618还包括任何系统部件或模块来实施本文描述的技术的实施例。在该示例中,设备应用618包括被示为软件模块和/或计算机应用的可扩展定时器轮模块622。如上文进一步描述的,可扩展定时器轮模块622表示用于至少部分基于确定定时器轮是否没有定时器来动态启动和停止定时器轮的执行的软件。替代地或附加地,可扩展定时器轮模块622可被实施为硬件、软件、固件或其任意组合。
设备600还包括提供音频数据到音频系统626和/或提供视频数据到显示系统628的音频和/或视频输入-输出系统624。音频系统626和/或显示系统628可包括处理、显示和/或以其它方式呈现音频、视频和图像数据的任何设备。视频信号和音频信号可经由RF(射频)链路、S-视频链路、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接或其它类似通信链路从设备600传递到音频设备和/或显示设备。在实施例中,音频系统626和/或显示系统628被实施为设备600的外部部件。替代地,音频系统626和/或显示系统628被实施为示例设备600的集成部件。
结论
各个实施例使能定时器轮的请求式扩展。一些实施例至少部分基于定时器轮是否具有任何相关联的活动定时器来动态启动和停止定时器轮。在一些情况下,当所有相关联活动定时器已被服务时,暂停定时器轮。替代地或附加地,在将一个或多个需要服务的活动定时器关联到定时器轮时,重新激活定时器轮。各个实施例使能在不使用与定时器轮相关联的全局锁的情况下将(多个)定时器添加到定时器轮和/或与定时器轮相关联的各个时隙以及从定时器轮和/或与定时器轮相关联的各个时隙移除(多个)定时器。
尽管已经以特定于结构特征和/或方法行动的语言描述了实施例,但是应当理解的是,所附权利要求中定义的实施例不一定限于描述的具体特征或行动。相反,具体特征和行动被公开为实施所主张实施例的示例形式。
Claims (20)
1.一种计算机实施的方法,包括:
实例化被配置为管理多个定时器的可扩展定时器轮;
确定所述可扩展定时器轮是否没有定时器;
响应于确定所述可扩展定时器轮没有定时器,暂停所述可扩展定时器轮的周期性活动;
响应于将至少一个定时器添加到空闲可扩展定时器轮,重新激活所述可扩展定时器轮的所述周期性活动;以及
将至少一个定时器分配到与所述可扩展定时器轮相关联的至少一个时隙,
其中确定所述可扩展定时器轮是否没有定时器包括利用原子计数器,所述原子计数器被配置为跟踪所述至少一个定时器何时被分配给所述至少一个时隙以及所述至少一个定时器何时与所述至少一个时隙分离。
2.如权利要求1所述的计算机实施的方法,其中所述周期性活动包括:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成所述活动时隙为止。
3.如权利要求2所述的计算机实施的方法,其中使能标识的所述定时器中的每个定时器的服务还包括将相关联的回调函数传递到单独任务以供执行。
4.如权利要求1所述的计算机实施的方法,其中暂停所述可扩展定时器轮的所述周期性活动包括无限期暂停所述定时器轮。
5.如权利要求1所述的计算机实施的方法,其中所述周期性活动包括:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成所述活动时隙为止,
其中使能标识的所述定时器中的每个定时器的服务还包括将相关联的回调函数传递到单独任务以供执行,
其中暂停所述可扩展定时器轮的所述周期性活动包括无限期暂停所述定时器轮。
6.如权利要求5所述的计算机实施的方法,其中所述可扩展定时器轮包括圆形阵列定时器轮。
7.包括处理器可执行指令的一个或多个计算机可读存储存储器,所述指令响应于由至少一个处理器执行而被配置为:
实例化被配置为管理多个定时器的可扩展定时器轮;
确定所述可扩展定时器轮是否没有定时器;
响应于确定所述可扩展定时器轮没有定时器,暂停所述可扩展定时器轮的周期性活动;
响应于将至少一个定时器添加到空闲可扩展定时器轮,重新激活所述可扩展定时器轮的所述周期性活动;以及
将至少一个定时器分配到与所述可扩展定时器轮相关联的至少一个时隙,
其中用于确定所述可扩展定时器轮是否没有定时器的所述处理器可执行指令还被配置为利用原子计数器,所述原子计数器被配置为跟踪所述至少一个定时器何时被分配给所述至少一个时隙以及所述至少一个定时器何时与所述至少一个时隙分离。
8.如权利要求7所述的一个或多个计算机可读存储存储器,其中所述周期性活动包括处理器可执行指令,其被配置为:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成活动时隙为止。
9.如权利要求8所述的一个或多个计算机可读存储存储器,其中用于使能标识的所述定时器中的每个定时器的服务的所述处理器可执行指令还包括被配置为将相关联的回调函数传递到单独任务以供执行的指令。
10.如权利要求7所述的一个或多个计算机可读存储存储器,其中用于暂停所述可扩展定时器轮的所述周期性活动的所述处理器可执行指令还被配置为无限期暂停所述定时器轮。
11.如权利要求7所述的一个或多个计算机可读存储存储器,其中所述可扩展定时器轮包括圆形阵列定时器轮。
12.如权利要求7所述的一个或多个计算机可读存储存储器,其中所述周期性活动包括处理器可执行指令,其被配置为:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成所述活动时隙为止,
其中用于使能标识的所述定时器中的每个定时器的服务的所述处理器可执行指令还包括被配置为将相关联的回调函数传递到单独任务以供执行的指令,
其中用于暂停所述可扩展定时器轮的所述周期性活动的所述处理器可执行指令包括被配置为无限期暂停所述定时器轮的指令。
13.如权利要求12所述的一个或多个计算机可读存储存储器,其中所述可扩展定时器轮包括圆形阵列定时器轮。
14.一种计算机系统,包括:
至少一个处理器;
一个或多个计算机可读存储存储器,其包括处理器可执行指令,所述指令响应于由所述至少一个处理器执行而被配置为:
实例化被配置为管理多个定时器的可扩展定时器轮;
确定所述可扩展定时器轮是否没有定时器;
响应于确定所述可扩展定时器轮没有定时器,暂停所述可扩展定时器轮的周期性活动;
响应于将至少一个定时器添加到空闲可扩展定时器轮,重新激活所述可扩展定时器轮的所述周期性活动;以及
将至少一个定时器分配到与所述可扩展定时器轮相关联的至少一个时隙,
其中确定所述可扩展定时器轮是否没有定时器包括利用原子计数器,所述原子计数器被配置为跟踪所述至少一个定时器何时被分配给所述至少一个时隙以及所述至少一个定时器何时与所述至少一个时隙分离。
15.如权利要求14所述的计算机系统,其中所述周期性活动包括处理器可执行指令,其被配置为:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成活动时隙为止。
16.如权利要求15所述的计算机系统,其中用于使能标识的所述定时器中的每个定时器的服务的所述处理器可执行指令还包括被配置为将相关联的回调函数传递到单独任务以供执行的指令。
17.如权利要求14所述的计算机系统,其中用于暂停所述可扩展定时器轮的所述周期性活动的所述处理器可执行指令还被配置为无限期暂停所述定时器轮。
18.如权利要求14所述的计算机系统,其中所述可扩展定时器轮包括圆形阵列定时器轮。
19.如权利要求14所述的计算机系统,其中所述周期性活动包括处理器可执行指令,其被配置为:
从与所述可扩展定时器轮相关联的多个时隙标识活动时隙;
标识与所述活动时隙相关联的任何定时器;
使能与所述活动时隙相关联的标识的所述定时器中的每个定时器的服务;以及
暂时暂停所述可扩展定时器轮的执行,直到下一时隙变成所述活动时隙为止,
其中用于使能标识的所述定时器中的每个定时器的服务的所述处理器可执行指令还包括被配置为将相关联的回调函数传递到单独任务以供执行的指令,
其中用于暂停所述可扩展定时器轮的所述周期性活动的所述处理器可执行指令包括被配置为无限期暂停所述定时器轮的指令。
20.如权利要求19所述的计算机系统,其中所述可扩展定时器轮包括圆形阵列定时器轮。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/852,875 US9158331B2 (en) | 2013-03-28 | 2013-03-28 | On-demand scalable timer wheel |
US13/852875 | 2013-03-28 | ||
PCT/US2013/059330 WO2014158216A1 (en) | 2013-03-28 | 2013-09-12 | On-demand scalable timer wheel |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105308566A CN105308566A (zh) | 2016-02-03 |
CN105308566B true CN105308566B (zh) | 2019-07-05 |
Family
ID=49305095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380075130.5A Active CN105308566B (zh) | 2013-03-28 | 2013-09-12 | 请求式可扩展定时器轮 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9158331B2 (zh) |
EP (1) | EP2979182B1 (zh) |
CN (1) | CN105308566B (zh) |
WO (1) | WO2014158216A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678531B2 (en) * | 2014-02-14 | 2017-06-13 | Nxp Usa, Inc. | Methods and apparatus for adaptive time keeping for multiple timers |
CN105653286B (zh) * | 2015-12-31 | 2019-01-18 | 南京理工大学 | Windows平台下毫秒级异步定时器的实现方法 |
CN110209474B (zh) * | 2018-04-13 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 任务处理的方法和装置 |
WO2020056166A1 (en) * | 2018-09-14 | 2020-03-19 | Fungible, Inc. | Timer management for network devices |
CN114741179B (zh) * | 2022-05-20 | 2022-08-30 | 北京宇信科技集团股份有限公司 | 异步通讯的任务执行方法、装置、电子设备和存储介质 |
US11973637B1 (en) | 2022-11-22 | 2024-04-30 | Walmart Apollo, Llc | System and method for fallback communications using composite and concurrent state machines |
EP4379546A1 (en) * | 2023-05-02 | 2024-06-05 | Lemon Inc. | Task scheduling using timing wheel data structure |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115826A (en) * | 1997-09-16 | 2000-09-05 | Tandem Computers, Inc. | Interval-timing facility using overbuilt hierarchical timing wheels |
US6718479B1 (en) * | 2000-09-08 | 2004-04-06 | International Business Machines Corporation | Method, system, program, and data structures for managing hierarchical timing wheels |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768572A (en) | 1996-02-05 | 1998-06-16 | International Business Machines Corporation | Timer state control optimized for frequent cancel and reset operations |
US6802066B1 (en) * | 1999-07-22 | 2004-10-05 | Unisys Corporation | Method and system to share circular buffer without using locking mechanism |
US7801092B2 (en) | 2003-03-21 | 2010-09-21 | Cisco Technology, Inc. | Method for a simple 802.11e HCF implementation |
US8055918B2 (en) | 2008-04-03 | 2011-11-08 | International Business Machines Corporation | Optimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups |
US8307030B1 (en) * | 2010-04-20 | 2012-11-06 | Juniper Networks, Inc. | Large-scale timer management |
-
2013
- 2013-03-28 US US13/852,875 patent/US9158331B2/en active Active
- 2013-09-12 CN CN201380075130.5A patent/CN105308566B/zh active Active
- 2013-09-12 EP EP13773911.6A patent/EP2979182B1/en active Active
- 2013-09-12 WO PCT/US2013/059330 patent/WO2014158216A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115826A (en) * | 1997-09-16 | 2000-09-05 | Tandem Computers, Inc. | Interval-timing facility using overbuilt hierarchical timing wheels |
US6718479B1 (en) * | 2000-09-08 | 2004-04-06 | International Business Machines Corporation | Method, system, program, and data structures for managing hierarchical timing wheels |
Also Published As
Publication number | Publication date |
---|---|
WO2014158216A1 (en) | 2014-10-02 |
US20140298073A1 (en) | 2014-10-02 |
US9158331B2 (en) | 2015-10-13 |
EP2979182A1 (en) | 2016-02-03 |
CN105308566A (zh) | 2016-02-03 |
EP2979182B1 (en) | 2021-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105308566B (zh) | 请求式可扩展定时器轮 | |
CN102866903B (zh) | 将后台工作和前台工作解耦合 | |
TWI559153B (zh) | 分散式計算架構 | |
CN105190555B (zh) | 集中式任务调度 | |
US9075652B2 (en) | Idle time service | |
US8935698B2 (en) | Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors | |
JP6491326B2 (ja) | アプリケーションプログラムを実行するための方法および装置 | |
KR101551321B1 (ko) | 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템 | |
CN104205109B (zh) | 持续性和弹性的工作者进程 | |
CN104838360A (zh) | 基于配额的资源管理 | |
RU2697700C2 (ru) | Равноправное разделение системных ресурсов в исполнении рабочего процесса | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
CN101790721A (zh) | 执行顺序决定装置、执行顺序决定程序、执行顺序决定电路及信息处理装置 | |
CN102541661B (zh) | 实现等待地址同步接口的方法和设备 | |
US20150378782A1 (en) | Scheduling of tasks on idle processors without context switching | |
CN103765387A (zh) | 便携式计算装置中的分布式资源管理 | |
CN103201720B (zh) | 虚拟计算机控制装置、虚拟计算机控制方法以及集成电路 | |
JP2013516711A (ja) | 電子デバイスにおける電力を制御するシステムおよび方法 | |
CN114598665B (zh) | 资源调度方法、装置和计算机可读存储介质及电子设备 | |
US9436505B2 (en) | Power management for host with devices assigned to virtual machines | |
CN102970355B (zh) | 通过挂起承租人来管理数据中心的容量的方法和设备 | |
US9612907B2 (en) | Power efficient distribution and execution of tasks upon hardware fault with multiple processors | |
US20130283288A1 (en) | System resource conserving method and operating system thereof | |
US20120089986A1 (en) | Process pool of empty application hosts to improve user perceived launch time of applications | |
CN109815001A (zh) | 应用处理方法、装置及托管系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |