CN102141906A - 基于阵列的线程倒计时 - Google Patents

基于阵列的线程倒计时 Download PDF

Info

Publication number
CN102141906A
CN102141906A CN2011100373681A CN201110037368A CN102141906A CN 102141906 A CN102141906 A CN 102141906A CN 2011100373681 A CN2011100373681 A CN 2011100373681A CN 201110037368 A CN201110037368 A CN 201110037368A CN 102141906 A CN102141906 A CN 102141906A
Authority
CN
China
Prior art keywords
thread
bifurcated
counter memory
memory position
action
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.)
Granted
Application number
CN2011100373681A
Other languages
English (en)
Other versions
CN102141906B (zh
Inventor
E·A·奥玛拉
J·J·达菲
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102141906A publication Critical patent/CN102141906A/zh
Application granted granted Critical
Publication of CN102141906B publication Critical patent/CN102141906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供了基于阵列的线程倒计时。对线程分叉的操作。在运行时,任务被标识为被分成多个线程(即,分叉线程)要完成的多个子任务。为了能够验证分叉线程何时完成其任务,当分叉线程完成时设置和更新多个计数器存储器位置。在聚集中对多个计数器存储器位置求值以便确定是否完成了所有的分叉线程。一旦分叉线程被确定为已完成,就可以执行加入操作。使用多个存储器位置而不是单个存储器位置来考虑线程完成。这降低了线程争用的风险。

Description

基于阵列的线程倒计时
技术领域
本发明涉及计算系统中的线程处理,尤其涉及线程处理中的线程分配。
背景
多处理器计算系统能够在过程中同时执行多个线程,这常被称为并行处理。获得较好并行处理的最简单且有效的方式之一是分叉/加入并行性。如果线程遇到可被细分成多个独立任务的特定任务,则可发生分叉操作,在其中向不同线程分配不同的独立任务。当完成所有的任务时,加入分叉线程来允许初始线程继续工作。由此,在分叉/加入并行性中,检测何时完成了执行其有关的分叉子任务的所有线程是重要的。
检测何时完成了所有线程的一种方式是在启动分叉的时间设置锁存。用计数N来初始化该锁存,其中N是分叉线程在分叉子任务上操作的独立线程的数量。由于每一分叉线程完成其子任务,该线程向锁存发信号,这导致锁存将该计数递减1。所完成的分叉线程可随后在锁存上等待。当锁存计数达到零的时候,意味着所有分叉线程已完成并发信号给锁存。此时,所有线程都被唤醒。
该锁存的一实现是使用在构造时被设置为计数N且在每次信号调用时递减的单个整数变量。当该变量变成零的时候设置锁存。
发明内容
本文描述的至少一个实施例涉及线程分叉的操作。在运行时,任务被标识为被分成多个线程(即,分叉线程)要完成的多个子任务。为了能够验证分叉线程何时完成其任务,当分叉线程完成时设置和更新多个计数器存储器位置。在聚集中对多个计数器存储器位置求值以便确定是否完成了所有的分叉线程。一旦分叉线程被确定为已完成,就可以执行加入操作。
使用多个存储器位置而不是单个存储器位置来考虑线程完成。这降低了线程争用的风险。在一个实施例中,存储器位置与高速缓存行的边界对应,从而使得较不可能发生线程争用。
本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,下面将通过参考附图来呈现对各实施例的更具体的描述。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:
图1示出了可用于采用此处所描述的实施例的示例计算系统;
图2示出了用于执行线程并发分叉和加入操作的方法的流程图;
图3示出了具有被分成多个分叉任务由多个分叉线程在不同时间所完成的任务的线程;
图4A示出了在其中计数器存储器位置的数量与分叉线程的数量相同的计数器存储器位置的配置;
图4B示出了在其中计数器存储器位置的数量小于分叉线程的数量的计数器存储器位置的配置;以及
图4C示出了在其中计数器存储器位置的数量大于分叉线程的数量的计数器存储器位置的配置。
详细描述
根据本文描述的各实施例,描述了线程分叉的操作。在运行时,任务被标识为被分成多个线程(即,分叉线程)要完成的多个子任务。为了能够验证分叉线程何时完成其任务,当分叉线程完成时设置和更新多个计数器存储器位置。在聚集中对多个计数器存储器位置求值以便确定是否完成了所有的分叉线程。一旦分叉线程被确定为已完成,就可以执行加入操作。首先,关于计算系统的某些介绍性讨论将参考图1来描述。随后,分叉操作的使用的各种实施例将参考图2至4C来描述。
首先,关于多处理器计算系统的介绍性讨论将参考图1来描述。计算系统现在越来越多地采取各种形式。计算系统可以是,例如,手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至常规上不被视为计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括包含至少一个处理器以及其上能含有可由处理器执行的计算机可执行指令的存储器在内的任何设备或系统(或其组合)。存储器可以采取任何形式,并可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组成计算系统。
如图1所示,多处理计算系统100在其最基本的配置中通常包括至少两个处理器102A和102B,但可包括更多、或许多得多的处理器,如省略号102C所表示的。计算系统100还可包括存储器104,可以是物理系统存储器,可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分离的线程)。
在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行该动作的相关联的计算系统的一个或多个处理器响应于已经执行了计算机可执行指令,引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。
计算系统100还可以包含可允许计算系统100诸如通过例如网络110等与其他消息处理器进行通信的通信信道108。通信信道108是通信介质的示例。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传送介质。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、无线、红外线及其他无线介质之类的无线介质。如这里所使用的术语计算机可读介质包括存储介质和通信介质两者。
本发明的范围内的实施例还包括具有用于携带或其上储存有计算机可执行指令或数据结构的计算机可读介质的计算机程序产品。这样的计算机可读介质(或机器可读介质)可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括诸如RAM、ROM、EEPROM、CD-ROM、DVD-ROM之类的物理存储器和/或存储介质或其他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接完全视为计算机可读介质。因此,任何这样的连接被适当地称为计算机可读介质。上述的组合也应被包括在计算机可读介质的范围内。
计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于此处所描述的具体特征或动作。相反,此处所描述的具体特征和动作是作为实现所要求保护的主题的示例形式来公开的。
一种包括其上具有计算机可执行指令的一个或多个物理计算机可读介质的计算机程序产品,所述指令在被计算系统的一个或多个处理器执行时使所述计算系统执行一种方法。
图2示出了用于执行线程并发分叉和加入操作的方法200的流程图。分叉和加入操作可以是例如用于执行图1的计算系统100中并行处理的机制,它被示为包括两个处理器102A和102B,但可包括更多、或许多得多的处理器,如省略号102C所表示的。
在诸如图1的计算系统等计算系统中,响应于存储器104中提供的计算机可执行指令的执行来执行任务。操作系统通过将任务分配给线程来执行这样的指令。例如,参考图3,任务320被分配给线程301。
在分叉操作中,计算系统100将常常(或许在计算机可执行指令本身的帮助下)确定分配给父线程的任务要被分成要由多个分叉线程共同完成的子任务(动作201)。作为一示例,首先确定要划分分配给线程的任务(动作211),随后标识独立的子任务(动作212),并且随后将每一子任务分配给分叉线程中的一个(动作213)。
参考图3作为一示例,由父线程301来完成的任务320被细分成由相应的分叉线程311、312、313和314来完成的子任务321、322、323和324。然而,在分叉操作中,父任务可被分成要由任何数量的分叉线程来完成的任何数量的独立子任务。相应的分叉线程311至314中的每一个将在不同时间完成它们的子任务,如图3中符号311至334分别表示的。
在本说明书和权利要求书中,“父”任务是要被划分的任务,以及“父”线程是其任务要被划分的线程。“分叉”任务是从父任务中已被划分的父任务的一部分,而“分叉”线程是为完成分叉任务而已被分配的线程。父线程不需要是操作系统所管理的主线程。然而,父线程和分叉线程可由操作系统来管理。
在某一时刻,或许在分叉操作的时间,但或许在多个计数器存储器位置在存储器中被设置之前(动作202)。计数器存储器位置中的每一个仅仅对应于分叉线程的子集。例如,计算机存储位置可位于图1的计算系统100的存储器104中。
图4A示出了四个计数器存储器位置401A、402A、403A和404A。在这种情况下,计数器存储器的数量(即,四个)与分叉线程的数量(即,四个)相同。例如,计数器存储器位置401A可能与分叉线程311相关联,计数器存储器位置402A可能与分叉线程312相关联,计数器存储器位置403A可能与分叉线程313和314相关联,以及计数器存储器位置404A可能不与任何分叉线程相关联。
在图4A的示例中,注意到计数器存储器位置404A中的一个不具有对应的分叉线程。只要存在确实具有对应的分叉线程的至少两个存储器位置,则落入本文描述的原理的范围内。
在一个实施例中,计数器存储器位置的数量和分叉线程的数量是相同的,如图4A中,并且计数器存储器位置中的每一个与分叉线程中的单个相对应。在该示例中,参考图4A,计数器存储器位置401A可与分叉线程311相关联,计数器存储器位置402A可与分叉线程312相关联,计数器存储器位置403A可与分叉线程313相关联,以及计数器存储器位置404A可与分叉线程314相关联。
图4B示出了一替换方案,其中仅存在两个计数器存储器位置401B和402B。由此,这示出了其中计数器存储器位置的数量小于多个分叉线程的数量的示例。例如,计数器存储器位置401B可能与分叉线程311和312相关联,而计数器存储器位置402B可能与分叉线程313和314相关联。然而,不要求计数器存储器位置与相同数量的分叉线程相关联。例如,计数器存储器位置401B可能仅与一个分叉线程311相关联,而计数器存储器位置402B可能与三个分叉线程312、313和314相关联。
图4C示出了一替换方案,其中存储六个存储器位置401C、402C、403C、404C、405C和406C。由此,这示出了其中计数器存储器位置的数量(即,六个)大于分叉线程的数量(即,四个)的示例。这里,不是所有的计数器存储器位置都将与分叉线程相关联。例如,或许计数器存储器位置401C与分叉线程311相关联,计数器存储器位置403C与分叉线程312相关联,计数器存储器位置404C与分叉线程313相关联,以及计数器存储器位置406C与分叉线程314相关联。然而,计数器存储器位置402C和405C不具有相关联的分叉线程。
在一个实施例中,计数器存储器的数量被初始化为分叉线程的数量乘以等于1或大于1的某一正数。例如,在图4A的情况下,计数器存储器位置的数量与线程的数量相同。因此,在该情况下,该正数将等于1。在图4C的情况下,该正数是1.5,因为存在六个存储器位置和四个线程。在一个具体实施例中,该正数是诸如1、2、3等的正整数。由此,如果正整数是2,并且如果存在四个分叉线程,则在分叉操作期间初始化八个存储器位置。在一个实施例中,计数器存储器位置被实现为无锁的,其中它们的内容可通过对应的线程来编辑,而不锁定该存储器位置。
在一个实施例中,分叉线程通过由操作系统分配的线程标识符来与计数器存储器位置相关联。分叉线程可通过将线程标识符提供到散列函数来与对应的计数器存储器位置相关联,该散列函数确定性地将该线程标识符映射到计数器存储器位置中的对应的一个。在另一实施例中,由于创建了分叉线程,仅仅向这些分叉线程提供新生成的计数器存储器位置,并且系统跟踪此相关性。
如以下将进一步描述的,由于存在当分叉线程完成时可被更新的多个计数器存储器位置,因此任何单个计数器存储器位置将遭受争用的可能性较小。为了进一步降低争用的风险,计数器存储器位置可与高速缓存行的大小和边界相对应。由此,由于在相同的高速缓存行内将没有计数器存储器位置,因此针对任何给定计数器存储器位置的争用的可能性进一步被降低。
此时,通过使每一分叉线程具有对应的计数器存储器位置,分叉线程可以执行它们相应的子任务。例如,参考图3,分叉线程311、312、313和314执行它们相应的子任务321、322、323和324。尽管分叉线程可以在相同时间完成其执行,但不太可能每一子任务需要不同的工作量。因此,在图3的示例中,每一分叉线程311至314在不同时间331至334完成。
参考图2,对于分叉线程中的每一个,当用其对应的一个或多个子任务完成了分叉线程时,在对应于该分叉线程的计数器存储器位置中考虑该完成(动作203)。例如,可以用计数零来最初地初始化每一存储器位置。可以通过在对应的计数器存储器位置中将计数递增1来考虑该完成。由此,当所有分叉线程都已完成时,所有计数器存储器位置中的计数之和应等于分叉线程的数量。
因此,方法300周期性地对所有计数器存储器位置的聚集进行求值(动作204)。例如,该求值可以按周期性间隔来执行,或者或许该求值可以在分叉线程每次考虑在其对应的计数器存储器位置中的完成时执行。换言之,该求值可以在计数器存储器位置每次被更新时执行。在一替换实施例中,存在最初未发信号通知的事件。线程每次更新其计数器时,一函数对该事件进行求值,并且如果所有计数器存储器位置中的总和等于分叉线程的总数,则发信号通知该事件,并且该函数返回真。否则,该函数返回假。
在多个分叉线程共同完成了所有多个子任务之后,这一求值(动作204)将导致确定所有分叉线程完成了它们相应的一个或多个子任务(动作205)。例如,如果计数器存储器位置的所有计数之和等于分叉线程完成的任务数量,则可能登记的所有分叉线程完成它们所有的任务(不存在故障状况)。例如,如果分叉线程A、B、C和D的每一个要完成一个任务,对应于任务I、任务II、任务III和任务IV的片段,则计数器存储器位置的聚集的总计数将等于四,因为计数器存储器位置中的一个每当任务完成时被更新。另一方面,可能仅存在共同完成任务I、任务II、任务III和任务IV的两个分叉线程A和B。在该情况下,分叉线程中的一个或两个可每当分叉任务完成时多次更新计数器存储器位置。
此时,加入操作可在分叉线程上执行(动作206)。这允许父线程继续处理其他任务。
可递归地执行方法300。例如,在任何时刻,分叉线程中的一个可确定其子任务可被划分。这一确定可以在分叉线程完成其子任务时在该分叉线程的附加处理的辅助下进行。在该阶段,分叉线程将成为两个或多个第二代分叉线程的父线程。这可以递归地继续而没有限制。然而,对于递归的每一等级,该方法将独立于递归的其他等级来重复,其中为每一递归等级设置计数器存储器位置。
以下是示出每一线程的完成如何导致对应的计数器存储器位置被更新的代码示例。
Figure BSA00000433771900081
Figure BSA00000433771900091
在这一代码示例中,每一线程在完成时发信号。从线程标识符导出索引。调用方法Interloc k.Add方法来更新计数器。更新计数器之后,线程迭代通过所有阵列计数器以取得当前计数。如果当前计数等于初始计数,则设置对象来对所有等待的线程进行脉冲。如果当前线程超出初始计数,则抛出异常。
通过迭代通过阵列中的所有计数器、并且对它们求和来计算当前计数,如以下代码示例所表示的:
Figure BSA00000433771900092
Figure BSA00000433771900101
在一个实施例中,如先前提及的,计数器存储器位置与高速缓存边界对齐。这避免了若多个计数器存储器位置在相同的高速缓存行中可能发生的假共享。以下表示定义了一个示例计数器存储器位置的结构的代码:
由此,本文描述的原理提供了当分叉线程完成时被更新的计数器存储器位置的阵列,从而降低了当线程完成时在单个存储器位置上的争用的机会。此外,如果沿着高速缓存边界来分配计数器存储器位置,则避免了假共享。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。

Claims (20)

1.一种包括其上具有计算机可执行指令的一个或多个物理计算机可读介质的计算机程序产品,所述指令在被计算系统的一个或多个处理器执行时使所述计算系统执行一种方法包括:
确定分配给线程的任务要被分成由多个分叉线程共同完成的多个子任务的动作;
设置多个计数器存储器位置的动作,每一计数器存储器位置仅对应于所述分叉线程的一个子集;
对于所述多个分叉线程的每一个,当用多个子任务的其对应的一个或多个子任务来完成所述分叉线程时,考虑对应于所述分叉线程的计数器存储器位置中的完成的动作;以及
在所述多个分叉线程已经共同完成了所有多个子任务之后,使用来自所述多个计数器存储器位置的每一个的数据来确定所述多个分叉线程已经完成了它们相应的一个或多个子任务的动作。
2.如权利要求1所述的计算机程序产品,其特征在于,所述多个计数器存储器位置的每一个与高速缓存行的大小和边界相对应。
3.如权利要求1所述的计算机程序产品,其特征在于,所述来自多个计数器存储器位置的每一个的数据包括对应于所述计数器存储器位置的所完成的线程的计数。
4.如权利要求3所述的计算机程序产品,其特征在于,所述考虑在对应于所述分叉线程的计数器存储器位置中的完成的动作包括递增对应于所述分叉线程的计数器存储器位置所持有的计数。
5.如权利要求1所述的计算机程序产品,其特征在于,所述方法还包括:
在所述多个分叉线程上执行加入操作的动作。
6.如权利要求5所述的计算机程序产品,其特征在于,所述方法针对所述多个分叉线程中的至少一个递归地执行。
7.如权利要求1所述的计算机程序产品,其特征在于,所述多个计数器存储器位置的数量与所述多个分叉线程的数量相同。
8.如权利要求7所述的计算机程序产品,其特征在于,所述多个计数器存储器位置的每一个与所述多个分叉线程的单个相对应。
9.如权利要求1所述的计算机程序产品,其特征在于,所述计算机存储位置的每一个被实现为无锁的存储器位置。
10.如权利要求1所述的计算机程序产品,其特征在于,所述多个计数器存储器位置的数量大于所述多个分叉线程的数量。
11.如权利要求1所述的计算机程序产品,其特征在于,所述多个计数器存储器位置的少数不具有对应的分叉任务。
12.一种用于执行线程分叉操作的方法,所述方法包括:
确定分配给线程的任务要被划分的动作;
标识所述线程要被分成的多个子任务的动作;
将所述多个子任务的每一个分配给多个子任务的对应的一个的动作;
设置多个计数器存储器位置的动作,每一计数器存储器位置仅对应于所述分叉线程的一个子集;以及
对于所述多个分叉线程的每一个,当完成所述分叉线程时,考虑对应于所述分叉线程的计数器存储器位置中的完成。
13.如权利要求12所述的方法,其特征在于,还包括:
在所述多个分叉线程已经共同完成了所有多个子任务之后,使用来自所述多个计数器存储器位置的每一个的数据来确定所述多个分叉线程已经完成了它们相应的一个或多个子任务的动作。
14.如权利要求13所述的方法,其特征在于,所述来自多个计数器存储器位置的每一个的数据包括对应于所述计数器存储器位置的所完成的线程的计数。
15.如权利要求14所述的方法,其特征在于,所述考虑在对应于所述分叉线程的计数器存储器位置中的完成的动作包括递增对应于所述分叉线程的计数器存储器位置所持有的计数的动作。
16.如权利要求12所述的方法,其特征在于,所述多个计算器存储器位置的每一个与高速缓存行的大小和边界相对应以避免假共享。
17.如权利要求12所述的方法,其特征在于,所述方法还包括:
在所述多个分叉线程上执行加入操作的动作。
18.一种包括其上具有计算机可执行指令的一个或多个物理计算机可读介质的计算机程序产品,所述指令在被计算系统的一个或多个处理器执行时使所述计算系统执行一种方法包括:
确定分配给线程的任务要被分成由多个分叉线程共同完成的多个子任务的动作;
初始化对应于高速缓存行的边界的多个计数器存储器位置的动作,每一计数器存储器位置仅对应于所述分叉线程的一个子集;
对于所述多个分叉线程的每一个,当用多个子任务的其对应的一个或多个子任务来完成所述分叉线程时,递增对应于所述分叉线程的计数器存储器位置中的计数的动作;以及
在所述多个分叉线程已经共同完成了所有多个子任务之后,确定所有多个计数器存储器位置的累积计数等于所述多个分叉线程的数量的动作。
19.如权利要求18所述的计算机程序产品,其特征在于,所述方法还包括:
基于确定所有多个计数器存储器位置的累积计数等于所述多个分叉线程的总数的动作来确定已经完成了所有多个分叉子任务的动作;以及
响应于基于确定所有多个计数器存储器位置的累积计数等于所述多个分叉线程的总数的动作来确定已经完成了所有多个分叉子任务的动作,在所述多个分叉线程上执行加入操作的动作。
20.如权利要求18所述的计算机程序产品,其特征在于,所述方法还包括:
加入所述多个分叉线程的动作。
CN201110037368.1A 2010-01-29 2011-01-28 基于阵列的线程倒计时 Active CN102141906B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/697,035 2010-01-29
US12/697,035 US20110191775A1 (en) 2010-01-29 2010-01-29 Array-based thread countdown

Publications (2)

Publication Number Publication Date
CN102141906A true CN102141906A (zh) 2011-08-03
CN102141906B CN102141906B (zh) 2015-05-06

Family

ID=44342762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110037368.1A Active CN102141906B (zh) 2010-01-29 2011-01-28 基于阵列的线程倒计时

Country Status (2)

Country Link
US (1) US20110191775A1 (zh)
CN (1) CN102141906B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2820081A1 (en) * 2010-12-16 2012-06-21 Et International, Inc. Distributed computing architecture
US20130081022A1 (en) * 2011-09-23 2013-03-28 Elwha LLC, a limited liability company of the State of Delaware Configuring interface devices with respect to tasks and subtasks
US9269063B2 (en) 2011-09-23 2016-02-23 Elwha Llc Acquiring and transmitting event related tasks and subtasks to interface devices
US9477471B1 (en) * 2015-07-07 2016-10-25 Versa Networks, Inc. Maintaining lock-free, high frequency, high performance counters in software

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030088756A1 (en) * 1997-03-21 2003-05-08 Vishkin Uzi Y. Spawn-join instruction set architecture for providing explicit multithreading
US20040187118A1 (en) * 2003-02-20 2004-09-23 International Business Machines Corporation Software barrier synchronization
CN1645317A (zh) * 1999-04-29 2005-07-27 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658654B1 (en) * 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
JP2004234123A (ja) * 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ
US8006064B2 (en) * 2008-05-13 2011-08-23 Intel Corporation Lock-free vector utilizing a resource allocator for assigning memory exclusively to a thread

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030088756A1 (en) * 1997-03-21 2003-05-08 Vishkin Uzi Y. Spawn-join instruction set architecture for providing explicit multithreading
CN1645317A (zh) * 1999-04-29 2005-07-27 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
US20040187118A1 (en) * 2003-02-20 2004-09-23 International Business Machines Corporation Software barrier synchronization

Also Published As

Publication number Publication date
CN102141906B (zh) 2015-05-06
US20110191775A1 (en) 2011-08-04

Similar Documents

Publication Publication Date Title
US10545789B2 (en) Task scheduling for highly concurrent analytical and transaction workloads
CN101268445B (zh) 用于向多核环境中的应用程序提供实时线程服务的方法、装置
US8788986B2 (en) System and method for capacity planning for systems with multithreaded multicore multiprocessor resources
CN104011681B (zh) 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息
US20140129609A1 (en) Computation of Componentized Tasks Based on Availability of Data for the Tasks
EP3238100B1 (en) Efficient determination of join paths via cardinality estimation
US9632836B2 (en) Scheduling applications in a clustered computer system
KR20140014090A (ko) 기민 통신 오퍼레이터
JP6446125B2 (ja) リソースリーク検出の方法、装置及びシステム
US11150944B2 (en) Balancing mechanisms in ordered lists of dispatch queues in a computational device
US20170351549A1 (en) Task queuing and dispatching mechanisms in a computational device
US20190205168A1 (en) Grouping of tasks for distribution among processing entities
CN108334408B (zh) 代码执行方法、装置、终端设备及计算机可读存储介质
US10860352B2 (en) Host system and method for managing data consumption rate in a virtual data processing environment
US11755245B2 (en) Method, device, and computer program product for managing access workload of storage system
CN104919427A (zh) 动态组件性能监视
CN102141906B (zh) 基于阵列的线程倒计时
CN110673959A (zh) 用于处理任务的系统、方法和装置
US20130138923A1 (en) Multithreaded data merging for multi-core processing unit
He et al. Real-time scheduling in mapreduce clusters
US10061676B2 (en) Remotely located timing method and device for a processing unit in an information processing system
Wang et al. DDS: A deadlock detection-based scheduling algorithm for workflow computations in HPC systems with storage constraints
Tardieu et al. X10 and APGAS at Petascale
US11442639B2 (en) Method, apparatus, and storage medium for managing stripe in storage system
KR101473955B1 (ko) Qr분해 연산 방법 및 기록매체

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150716

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150716

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.