CN101689139B - 使用类型稳定性来便于争用管理 - Google Patents
使用类型稳定性来便于争用管理 Download PDFInfo
- Publication number
- CN101689139B CN101689139B CN200880022472.XA CN200880022472A CN101689139B CN 101689139 B CN101689139 B CN 101689139B CN 200880022472 A CN200880022472 A CN 200880022472A CN 101689139 B CN101689139 B CN 101689139B
- Authority
- CN
- China
- Prior art keywords
- affairs
- data structure
- reference count
- transaction data
- transaction
- 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/466—Transaction processing
- G06F9/467—Transactional memory
Abstract
公开了用于提供类型稳定性技术以增进争用管理的各种技术和方法。提供允许事务安全地检查其它事务的状态的引用计数机制。使用该引用计数机制来便于争用管理。当在两个事务之间检测到冲突时,获取拥有事务信息。拥有事务的引用计数被递增。系统确保正确事务被递增。如果拥有事务仍然是冲突事务,则作出确定正确解决方案的争用管理判定。在作出判定时,拥有事务上的引用计数被冲突事务递减。在每一事务完成时,其为其本身持有的引用计数被递减。不可解除分配数据结构直到其引用计数为零。可使用不稳定属性来减少专用类型稳定分配池。
Description
背景
事务存储器是允许更简单地编写并发程序的机制。事务指定应当“如同”其孤立地执行一样执行的代码序列。在实践中,允许并发地执行事务,并随后检测冲突数据访问。在争用发生时要做什么的判定(即,“争用管理”)可对事务系统的性能具有大的影响。
然而,在实现争用管理器中存在重要的底层问题。假设事务Tx1检测到与事务Tx2的争用-也许Tx2持有对Tx1也希望锁定的数据项目的悲观写锁。在某些情况下,争用管理器中止Tx2以允许Tx1获取该锁可能是有意义的。也许Tx2短,而Tx1长,因此在中止之后重做Tx2的工作的成本会比重做Tx1少得多。
但在此示例场景中,Tx1注意到争用,且因此似乎是执行争用管理判定的逻辑的逻辑位置。但为了这样做,需要关于Tx2的信息,诸如关于其执行的统计数据、其事务日志的内容等,或者也许需要请求Tx2自愿地中止,以释放其获取的锁。此信息最自然地驻留在表示事务Tx2的数据结构中。出于效率的原因,期望使此数据结构对执行Tx2的线程来说是本地的,而不在某个全局数据结构中。事务存储器系统将定义某些覆盖每一可能被共享的数据项目的锁定数据结构。在一位置被写锁定时,此锁定数据结构将包含某些持有该锁的事务的指示。在Tx1发现其设法访问的数据项目被写锁定时,它可以读取此锁定数据结构以发现Tx2的身份。该问题的症结是一旦Tx1获取了指向表示Tx2的数据结构的指针,并准备从该数据结构中读取信息,Tx2可能完成,且其数据结构出于某些其它目的可被解除分配,且可能被重新分配。在此情况中,Tx1读取的关于Tx2的信息是不稳定的。
概述
公开了用于提供类型稳定性技术以增进争用管理的各种技术和方法。事务存储器系统提供允许事务安全地检查表示其它事务的数据结构的引用计数机制。使用引用计数机制来便于两个事务之间的冲突的解决(称为“争用管理”)。例如,因为一个事务试图获取另一事务所拥有的独占锁,所以获取关于拥有事务的信息。递增表示拥有事务的数据结构的引用计数。系统确保递增正确的事务数据结构引用计数,以防止该数据结构被解除分配和重新分配以表示另一事务。如果拥有事务仍然持有导致该冲突的锁,则拥有事务数据结构中的信息通知确定是中止两个事务之一还是等待拥有事务释放该锁的争用管理判定。
在作出争用管理判定时,拥有事务数据结构的引用计数被之前对其递增的冲突事务递减。每一事务数据结构以引用计数1开始,且随着事务完成,其递减其数据结构的引用计数。非零引用计数防止在另一线程中的冲突事务正在访问事务数据结构的同时该事务数据结构被解除分配。可在其引用计数为零时对数据结构解除分配。
在一实现中,可使用一不稳定属性来减少专用类型稳定分配池。线程不稳定属性在指向事务数据结构的指针可由线程获取之前被设置,且在此类指针的使用完成之后被清除。在垃圾收集暂停期间,仅当未在线程中的任何一个上设置线程不稳定属性时,才可删除类型稳定分配池中的对象。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的事务存储器应用程序的图示。
图3是图1的系统的一个实现的高级过程流程图。
图4是图1的系统的一个实现的过程流程图,其示出使得事务日志分段类型稳定所涉及的各阶段。
图5是图1的系统的一个实现的过程流程图,其示出使得事务数据结构类型稳定所涉及的各阶段。
图6是图1的系统的一个实现的过程流程图,其示出由参与引用计数机制的持有锁的事务所采取的动作。
图7是图1的系统的一个实现的过程流程图,其示出由参与引用计数机制的、注意到争用的事务所采取的动作。
图8是在两个事务之间使用引用计数机制的一个实现的图示。
图9是图1的系统的一个实现的过程流程图,其示出使用不稳定属性来减少专用类型稳定分配池所涉及的各阶段。
图10是示出通过跟踪指向类型稳定存储器的指针的位置来减少专用类型稳定分配池的替换实现的过程流程图。
详细描述
此处的技术和方法可以在如事务存储器系统的一般上下文中描述,但本技术和方法也用于除此之外的其它目的。在一个实现中,此处所描述的一个或多个技术可被实现为诸如微软.NET框架等框架程序内的、或来自为开发者提供开发软件应用程序的平台的任何其它类型的程序或服务的特征。在另一实现中,此处所描述的一个或多个技术被实现为处理开发在并发环境中执行的应用程序的其它应用程序的特征。
在一实现中,提供使用类型稳定性技术以启用无锁争用管理的事务存储器系统。在一实现中,提供允许一个事务安全地检查表示另一事务的数据结构的引用计数机制。此处所使用的术语“引用计数机制”指的是包括用于跟踪一给定事务数据结构的数字或其它数据,其指示在特定时间是否有其它事务对该给定数据结构有兴趣,且用于在其它事务有兴趣时防止该给定数据结构被解除分配(返回到类型稳定池)。此处所使用的术语“类型稳定分配池”表示从中对象以特殊方式被分配的存储器池:一旦分配了一表示类型T的对象的块,就永不重新使用该存储器来表示某个其它类型U。因此,总可将指向这样的T的指针假设为指向T。此处所使用的术语“安全地检查”指的是包括以在检查进行的同时不允许正在被检查的数据被解除分配的方式来检查数据的能力。事务数据结构的引用计数被登记对其的兴趣的每一其它事务递增。在此兴趣结束时递减该引用计数。当然,每一事务对表示它本身的数据结构具有“兴趣”,所以这些数据结构被分配为引用计数1,且在事务完成时,递减其事务数据结构的引用计数。不可对数据结构解除分配直到其引用计数是零。在另一实现中,可通过由垃圾收集器所识别的不稳定属性的使用来安全地释放专用类型稳定分配池。线程不稳定属性在指向事务数据结构的指针可由线程获取之前被设置,且在这些指针的所有使用完成之后被复位。在垃圾收集暂停期间,仅在未在线程中的任何一个上设置线程不稳定属性时,才可删除类型稳定分配池中的对象。
如图1所示,用于实现本系统的一个或多个部分的示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图1中由虚线106来示出。
另外,设备100还可具有附加特征/功能。例如,设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与其它计算机/应用程序115进行通信的一个或多个通信连接114。设备100也可具有输入设备112,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可包括输出设备111,如显示器、扬声器、打印机等。这些设备在本领域中公知且无需在此处详细讨论。在一个实现中,计算设备100包括事务存储器应用程序200。事务存储器应用程序200将在图2中更详细地描述。
现在转向图2并继续参考图1,示出了在计算设备100上操作的事务存储器应用程序200。事务存储器应用程序200是驻留在计算设备100上的应用程序中的一个。然而,可以理解,事务存储器应用程序200可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或与图1所示的不同的变型。另选地或另外地,事务存储器应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
事务存储器应用程序200包括负责执行在此描述的技术中的一些或全部的程序逻辑204。程序逻辑204包括用于提供争用管理器的逻辑206;用于使事务日志分段类型稳定的逻辑208(如以下参考图4所述);用于使事务数据结构类型稳定的逻辑210(如以下参考图5所述);用于使用引用计数机制来允许第一事务安全地检查第二事务的状态的逻辑212(如以下参考图6-8所述);用于适当地减少专用类型稳定分配池的逻辑214(如以下参考图9-10所述);以及用于操作应用程序的其它逻辑220。
现在转向图3-10并继续参考图1-2,更详细地描述了用于实现事务存储器应用程序200的一个或多个实现的各阶段。在某些实现中,图3-10的过程至少部分地在计算设备100的操作逻辑中实现。图3是事务存储器应用程序200的高级过程流程图。应该理解,尽管按次序描述图3,但不存在期望的次序,且可按其它次序提供和/或执行图3中所述的各特征和/或动作。该过程在起始点240开始,如图4中更详细地描述地,使事务日志分段类型稳定(阶段242)。类型稳定性保证由类型稳定指针所指向的对象具有所指示的类型。在一并发环境中,所讨论的对象的内容可被并发线程改变,但其类型将不改变。如在图5中更详细地描述地,系统使事务数据结构类型稳定(阶段244)。如图68中更详细地描述地,使用引用计数机制来允许另一事务防止其感兴趣的事务数据结构被解除分配(阶段246)。如图9和10中更详细地描述的,该系统可任选地适当减少专用类型稳定分配池(阶段248)。该过程在结束点250处结束。
图4示出使事务日志分段类型稳定所涉及的各阶段的一个实现。应该理解,尽管按次序描述图4,但不存在期望的次序,且可按其它次序提供和/或执行图4中所述的各特征和/或动作。该过程在起始点270开始,确保如果指针是指向日志分段的指针,则其将在之后的时间中保持如此(阶段272)。系统使所有日志分段大小相等,且与其分配大小对齐(阶段274)。系统使用指向表示其拥有事务的数据结构的指针来开始每一日志分段(276)。给定指向日志分段中的写日志条目的指针,则可计算指向该日志分段的起始的指针(阶段278)。该过程在结束点280处结束。
图5示出使事务数据结构类型稳定所涉及的各阶段的一个实现。该过程在起始点290开始,提供仅增长的事务数据结构的全局池(阶段292)。为使得分配更有效率,向线程局部分配池给出全局池中的事务数据结构中的中等大小的组块(阶段294)。这使得解除引用指向事务数据结构的给定指针是安全的(阶段296)。该过程在结束点298处结束。
图6示出由参与引用计数机制的、持有锁的事务所采取的动作的一个实现。该过程在起始点310开始,给予新分配的事务数据结构引用计数1,以表示由其表示的事务所使用(阶段312)。在每一事务完成时,其递减其自己的事务数据结构的引用计数(阶段314)。如果该引用计数变为零,则可对该数据结构解除分配(阶段316)。如果引用计数大于零,则它不被解除分配,而将解除分配责任传递到最终将该引用计数减为零的事务(阶段318)。该过程在结束点320处结束。
图7示出由参与引用计数机制的、注意到争用的事务所采取的动作的一个实现。该过程在起始点340开始,跟踪对象中的锁定信息以获取指向表示可能拥有事务的数据结构的指针(阶段342)。在可能拥有事务的数据结构中递增引用计数(阶段344)。在再次跟踪对象中的锁定信息后,确定正确事务数据结构的引用计数是否被递增(判定点346)。如果锁定信息仍然指向同一事务数据结构,则该事务数据结构是用于该“正确事务”的。如果正确引用计数未被递增,则可能拥有事务的数据结构的引用计数递减且锁定在较高层级重试(阶段348)。
如果正确事务数据结构的引用计数被递增(判定点346),则作出是中止争用事务、还是中止自己(注意到该争用的事务)、等待争用事务释放锁的争用管理判定(阶段350)。拥有事务数据结构的引用计数随后被递减,且如果该递减使该数据结构的引用计数到零则删除该数据结构。该过程在结束点354处结束。
图8是在两个事务之间使用引用计数机制的一个实现的图示。第一事务362具有数据结构364和事务日志分段366。第二事务363也具有数据结构365和事务日志分段367。在第二事务363由于被争用的对象369而登记对第一事务362的数据结构的兴趣时,第二事务363读取被争用的对象369中的锁定信息以发现该对象被锁定且第一事务362持有该锁。在此实现中,被争用的对象369中的锁定信息包含指向锁定事务362的日志中的条目的指针,其包含关于该锁定的更多信息。如前所述,日志分段包含指向其拥有事务数据结构364的指针。在其它实现中,可使用其它锁定机制来标识拥有该锁的事务的数据结构。例如,锁定信息可能直接指示拥有事务,且可将关于存储在日志分段366中的日志条目中的锁定的其它信息保存在由被锁定的对象的地址所索引的散列表中。
第二事务递增第一事务362的数据结构364中的引用计数(在此递增之后,以值2示出)。在此过程期间,执行第一事务的线程不被停止。其可继续执行,完成其事务工作362,并对表示它的数据结构364解除分配。此数据结构甚至可以被重新分配以表示第三事务。递增引用计数的目的是防止解除分配,但该递增可在这些步骤之后发生,使得该数据结构被解除分配或表示一不同事务。第二事务363因此必须在递增引用计数之后验证数据结构364仍然表示感兴趣的事务。第二事务363再次检查争用对象364中的锁定信息,以验证其仍然指向同一事务数据结构364。如果锁定信息不指向该同一数据结构,则被争用的对象369的锁定信息已经改变,因为锁定过程现在可能成功,所以从开头重试锁定过程。如果锁定信息指向同一事务数据结构364,则事务363已经获取指向第一事务362的数据结构364的指针368,以便其可安全地检查数据结构364以便于被争用的对象369的争用管理判定。在第二事务363完成时,其递减第一事务362中的数据结构364的引用计数以指示其对该数据结构不再有兴趣。特定事务数据结构不可被解除分配直到其引用计数为零,这意味着不再有对其数据感兴趣的任何事务。如果事务362已经在之前完成,则事务363进行的递减可使事务数据结构364的引用计数到零,在这种情况下事务363必须对此数据结构解除分配。
图9示出使用不稳定属性来减少专用类型稳定分配池所涉及的各阶段的一个实现。该过程在起始点370开始,在当前线程上设置不稳定位(阶段372)。随后获取指向争用事务的指针(阶段374)。在一个实现中,每一线程必须在可能获取指向事务数据结构的指针之前设置不稳定属性。作出解决冲突的争用管理判定(阶段376)。一旦作出争用管理判定,则不再使用指向争用事务的指针(阶段376)。因此,在当前线程上清除不稳定位(阶段378)。在一个实现中,如果所有线程都在逻辑收集处被停止,且没有线程设置了其不稳定属性,则类型稳定分配池中的对象可被解除分配。此解除分配不是类型稳定的,因为所删除的存储器可被返回给操作系统并被重新分配以表示其它类型。该过程在结束点380处结束。
图10示出对图9的实现的替换,其示出通过跟踪指向类型稳定存储器的指针的位置来减少专用类型稳定分配池所涉及的各阶段。该过程在起始点400开始,要求执行争用管理的线程声明指向类型稳定存储器的指针的位置(阶段402)。系统在类型稳定分配池上执行类似垃圾收集的过程,以标识正在使用的元素(阶段404)。系统可任选地对剩余类型稳定分配池中的某一些解除分配(阶段406)。该过程在结束点408处结束。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。落入在此所述和/或所附权利要求所描述的实现的精神的范围内的所有等效方案、更改和修正都期望受到保护。
例如,计算机软件领域普通技术人员将认识到,此处所讨论的示例可以在一个或多个计算机上不同地组织来包括比这些示例中所描绘的更少或更多选项或特征。
Claims (13)
1.一种使用引用计数机制来便于争用管理的计算机实现方法,包括以下步骤:
使用类型稳定性来分配多个事务的事务数据结构,包括使事务日志分段类型稳定,并且使所述事务数据结构类型稳定以保证所述事务数据结构类型将不改变,但允许所述事务数据结构的内容被改变;
当所述多个事务中的第一事务检测到与所述多个事务中的第二事务的争用时,跟踪对象中的锁定信息以获取指向所述第二事务的数据结构的指针,所述第二事务是拥有事务;
递增所述第二事务的数据结构中的引用计数;
再次跟踪所述对象中的所述锁定信息,如果所述锁定信息仍然指向同一事务数据结构,确定正确事务数据结构的引用计数是否被递增;以及
如果所述正确事务数据结构的所述引用计数被递增,作出是中止所述第二事务、还是中止所述第一事务、等待所述第二事务释放锁的争用管理判定。
2.如权利要求1所述的方法,其特征在于,在所述事务数据结构第一次被分配时对所述引用计数给予值1。
3.如权利要求1所述的方法,其特征在于,使用所述指针来查看所述第二事务的所述事务数据结构以作出争用管理判定。
4.如权利要求3所述的方法,其特征在于,在作出所述争用管理判定之后递减所述第二事务的所述事务数据结构中的所述引用计数。
5.如权利要求4所述的方法,其特征在于,如果所述引用计数大于零,则解除分配的责任被传递到最终将所述引用计数减少到零的特定事务。
6.如权利要求4所述的方法,其特征在于,如果所述引用计数变为零,则所述事务数据结构被解除分配。
7.如权利要求1所述的方法,其特征在于,所述引用计数机制可用于允许所述第一事务在所述第一事务对所述第二事务有兴趣时防止所述第二事务被解除分配。
8.一种使用引用计数机制来便于争用管理的方法,所述方法包括以下步 骤:
使用类型稳定性来分配多个事务数据结构,包括使事务日志分段类型稳定,并且使所述事务数据结构类型稳定以保证所述事务数据结构类型将不改变,但允许所述事务数据结构的内容被改变;
当所述多个事务中的第一事务检测到与所述多个事务中的第二事务的争用时,跟踪对象中的锁定信息以获取指向所述第二事务的数据结构的指针,所述第二事务是拥有事务;
递增所述第二事务的数据结构中的引用计数;
再次跟踪所述对象中的所述锁定信息,如果所述锁定信息仍然指向同一事务数据结构,确定正确事务数据结构的引用计数是否被递增;以及
如果所述正确事务数据结构的所述引用计数被递增,作出如何处理所述冲突的争用管理判定。
9.如权利要求8所述的方法,其特征在于,如果所述正确事务不被递增,则递减已被递增的引用计数并在较高层级重试锁定。
10.如权利要求8所述的方法,其特征在于,如果所述正确事务不被递增,则递减所述引用计数。
11.如权利要求10所述的方法,其特征在于,通过跟踪对象中的锁定信息来获取所述拥有事务信息以作出所述正确事务是否被递增的判定。
12.如权利要求8所述的方法,其特征在于,通过跟踪与一对象相关联的锁定信息来获取所述拥有事务信息。
13.如权利要求8所述的方法,其特征在于,所述争用管理判定包括确定是否中止所述两个事务之一或是否等待所述争用事务释放锁。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/824,353 | 2007-06-29 | ||
US11/824,353 US7991967B2 (en) | 2007-06-29 | 2007-06-29 | Using type stability to facilitate contention management |
PCT/US2008/067346 WO2009006025A2 (en) | 2007-06-29 | 2008-06-18 | Using type stability to facilitate contention management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689139A CN101689139A (zh) | 2010-03-31 |
CN101689139B true CN101689139B (zh) | 2014-04-30 |
Family
ID=40161866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880022472.XA Active CN101689139B (zh) | 2007-06-29 | 2008-06-18 | 使用类型稳定性来便于争用管理 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7991967B2 (zh) |
EP (1) | EP2176764B1 (zh) |
JP (1) | JP5435741B2 (zh) |
CN (1) | CN101689139B (zh) |
TW (2) | TWI455029B (zh) |
WO (1) | WO2009006025A2 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6988161B2 (en) | 2001-12-20 | 2006-01-17 | Intel Corporation | Multiple port allocation and configurations for different port operation modes on a host |
US7991967B2 (en) | 2007-06-29 | 2011-08-02 | Microsoft Corporation | Using type stability to facilitate contention management |
US8924403B2 (en) * | 2007-12-31 | 2014-12-30 | Sap Se | Method and system for central data querying |
US8832401B2 (en) * | 2011-01-26 | 2014-09-09 | International Business Machines Corporation | Iteratively de-allocating active objects associated with virtual functions of an adapter |
US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
WO2014142861A1 (en) * | 2013-03-14 | 2014-09-18 | Intel Corporation | Memory object reference count management with improved scalability |
US20160062655A1 (en) * | 2014-08-28 | 2016-03-03 | Endgame, Inc. | System and Method for Improved Memory Allocation in a Computer System |
WO2017011223A1 (en) * | 2015-07-10 | 2017-01-19 | Rambus, Inc. | Thread associated memory allocation and memory architecture aware allocation |
CN106599151A (zh) * | 2016-12-07 | 2017-04-26 | Tcl集团股份有限公司 | 一种Android工程无用资源并行清理的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7236974B2 (en) * | 2003-04-08 | 2007-06-26 | International Business Machines Corporation | System and method for a multi-level locking hierarchy in a database with multi-dimensional clustering |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4912629A (en) * | 1986-06-26 | 1990-03-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Real-time garbage collection for list processing using restructured cells for increased reference counter size |
US5701480A (en) * | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5241675A (en) * | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
US5335343A (en) * | 1992-07-06 | 1994-08-02 | Digital Equipment Corporation | Distributed transaction processing using two-phase commit protocol with presumed-commit without log force |
US5842016A (en) * | 1997-05-29 | 1998-11-24 | Microsoft Corporation | Thread synchronization in a garbage-collected system using execution barriers |
AU7099000A (en) * | 1999-09-01 | 2001-03-26 | Intel Corporation | Branch instruction for processor |
US6513100B1 (en) * | 2000-10-30 | 2003-01-28 | Microsoft Corporation | System and method for fast referencing a reference counted item |
US7216136B2 (en) * | 2000-12-11 | 2007-05-08 | International Business Machines Corporation | Concurrent collection of cyclic garbage in reference counting systems |
US7769791B2 (en) * | 2001-01-12 | 2010-08-03 | Oracle America, Inc. | Lightweight reference counting using single-target synchronization |
GB0130399D0 (en) * | 2001-12-19 | 2002-02-06 | Ibm | Message ordering in a messaging system |
US6754737B2 (en) * | 2001-12-24 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect |
US6785779B2 (en) * | 2002-01-09 | 2004-08-31 | International Business Machines Company | Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture |
US7395274B2 (en) * | 2002-07-16 | 2008-07-01 | Sun Microsystems, Inc. | Space- and time-adaptive nonblocking algorithms |
US7076508B2 (en) * | 2002-08-12 | 2006-07-11 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
US7089253B2 (en) * | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US7003532B2 (en) * | 2002-11-27 | 2006-02-21 | Microsoft Corporation | System and method for scaleable multiplexed transactional log recovery |
US6898685B2 (en) * | 2003-03-25 | 2005-05-24 | Emc Corporation | Ordering data writes from a local storage device to a remote storage device |
US7343598B2 (en) * | 2003-04-25 | 2008-03-11 | Microsoft Corporation | Cache-conscious coallocation of hot data streams |
US7243088B2 (en) * | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
US7475093B2 (en) * | 2004-10-15 | 2009-01-06 | Microsoft Corporation | Memory cache management in XML/relational data mapping |
US7376675B2 (en) * | 2005-02-18 | 2008-05-20 | International Business Machines Corporation | Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events |
US8027288B2 (en) * | 2005-04-22 | 2011-09-27 | Nokia Corporation | Reducing beacon slot acquisition time in distributed media access control network |
US20070198978A1 (en) * | 2006-02-22 | 2007-08-23 | David Dice | Methods and apparatus to implement parallel transactions |
US8028133B2 (en) * | 2006-02-22 | 2011-09-27 | Oracle America, Inc. | Globally incremented variable or clock based methods and apparatus to implement parallel transactions |
US7991967B2 (en) | 2007-06-29 | 2011-08-02 | Microsoft Corporation | Using type stability to facilitate contention management |
-
2007
- 2007-06-29 US US11/824,353 patent/US7991967B2/en active Active
-
2008
- 2008-06-10 TW TW097121596A patent/TWI455029B/zh not_active IP Right Cessation
- 2008-06-10 TW TW103109965A patent/TWI515661B/zh not_active IP Right Cessation
- 2008-06-18 WO PCT/US2008/067346 patent/WO2009006025A2/en active Application Filing
- 2008-06-18 EP EP08771367.3A patent/EP2176764B1/en active Active
- 2008-06-18 CN CN200880022472.XA patent/CN101689139B/zh active Active
- 2008-06-18 JP JP2010514981A patent/JP5435741B2/ja active Active
-
2011
- 2011-08-02 US US13/196,569 patent/US8578105B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7236974B2 (en) * | 2003-04-08 | 2007-06-26 | International Business Machines Corporation | System and method for a multi-level locking hierarchy in a database with multi-dimensional clustering |
Also Published As
Publication number | Publication date |
---|---|
TW200905568A (en) | 2009-02-01 |
US7991967B2 (en) | 2011-08-02 |
EP2176764A4 (en) | 2011-11-16 |
JP2010532531A (ja) | 2010-10-07 |
JP5435741B2 (ja) | 2014-03-05 |
TW201426557A (zh) | 2014-07-01 |
CN101689139A (zh) | 2010-03-31 |
EP2176764B1 (en) | 2015-07-15 |
US20090006405A1 (en) | 2009-01-01 |
US8578105B2 (en) | 2013-11-05 |
EP2176764A2 (en) | 2010-04-21 |
WO2009006025A2 (en) | 2009-01-08 |
US20110289288A1 (en) | 2011-11-24 |
TWI455029B (zh) | 2014-10-01 |
WO2009006025A3 (en) | 2009-03-05 |
TWI515661B (zh) | 2016-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689139B (zh) | 使用类型稳定性来便于争用管理 | |
KR101203297B1 (ko) | 직접 업데이트 소프트웨어 트랜잭션 메모리 | |
US8443155B2 (en) | Lock-free concurrent object dictionary | |
CN102929702B (zh) | 事务存储器中的并行嵌套事务 | |
US8108587B2 (en) | Free-space reduction in cached database pages | |
CN101652761A (zh) | 使用缓存写和强制串行化次序的事务存储器 | |
US7587566B2 (en) | Realtime memory management via locking realtime threads and related data structures | |
CN101681294B (zh) | 用于存储器事务分组的方法和系统 | |
US11132294B2 (en) | Real-time replicating garbage collection | |
CN104598397A (zh) | 使用缓冲存储加速事务的机构 | |
US9766950B2 (en) | Methods for single-owner multi-consumer work queues for repeatable tasks | |
US20230252081A1 (en) | Scalable range locks | |
US8001084B2 (en) | Memory allocator for optimistic data access | |
US20130031138A1 (en) | Method and apparatus for improving the performance of object-oriented queues | |
TWI438683B (zh) | 用於透過未管理指標之處理存取之電腦可讀取媒體與方法 | |
US8521776B2 (en) | Accessing data in a multi-generation database | |
CN106815057A (zh) | 依需合并具有相同内容的页面的方法和系统 | |
US8688662B2 (en) | Copy on access to locked objects | |
Kim et al. | Are Your Epochs Too Epic? Batch Free Can Be Harmful | |
CN117827745A (zh) | 对象系统下语义快照的实现方法、装置、设备及存储介质 | |
Gregor et al. | MPI for High-Level Languages | |
Compare | Steven Feldman, Pierre LaBorde & Damian Dechev |
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: 20150506 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150506 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |