CN1236453A - 管理链接表数据结构的方法和装置 - Google Patents
管理链接表数据结构的方法和装置 Download PDFInfo
- Publication number
- CN1236453A CN1236453A CN98801186A CN98801186A CN1236453A CN 1236453 A CN1236453 A CN 1236453A CN 98801186 A CN98801186 A CN 98801186A CN 98801186 A CN98801186 A CN 98801186A CN 1236453 A CN1236453 A CN 1236453A
- Authority
- CN
- China
- Prior art keywords
- data structure
- linked
- list data
- pointer part
- computer
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
Abstract
本文介绍一种管理链接表数据结构(20)的方法。链接表数据结构(20)有许多元素(22a、22b…22n),每个元素包括数据项(24a、24b… 24n)和顺序指向下一个元素的指针(26a、26b…26n)。该方法允许通过插入或从中删除元素来修改链接表数据结构(20),并允许同时执行对链接表数据结构(20)的非同步遍历操作。具体来说,该方法要求用原子操作(36)来修改链接表数据结构(20)内元素(24a、24b…24n)的指针(26a、26b…26n),以反映对链接表数据结构(20)的任何修改。采用原子操作(36)来更新指针(26a、26b…26n),能保障非同步遍历操作(38)检查的是有效的数据路径。
Description
本发明总体涉及计算机软件程序领域,更具体地说,本发明涉及一种对由计算机程序保持和访问的链接表数据结构进行管理的方法。
链接表数据结构存储数据元素的序列,具有快速地对这种序列进行增、删数据元素的功能。链接表数据结构的特点在于,它的每个数据元素都包括一个指向链接表中下一个顺序排列的元素的指针。因此应当明白,向链接表数据结构增加一个元素或者从中删除一个元素都要求修改与该元素直接相邻的前一个元素的指针内容,以反映链接表数据结构的变化。
多线程程序包括许多线程,其中的许多线程可能要求访问某特定的链接表数据结构。这种线程对链接表数据结构既可能进行非改变性操作例如GET(获取),也可能进行改变性操作例如ADD(增加)。为了防止许多线程同时访问一个对象,诸如链接表数据结构,通常的做法是让这类线程执行所谓的“同步化”方法(method),对目标对象进行锁定,这样就能防止任何其它方法在目标对象被活动方法释放之前访问到目标对象。
如果目标对象是链接表数据结构,一般来说整个数据结构都要被同步化方法锁定,直到方法完成。这样就能禁止不同线程同时访问一个链接表数据结构。
根据本发明的第一个方面,提供一种管理链接表数据结构的方法。链接表数据结构包括由数据部分和指针部分组成的第一个元素。该方法要求通过插入或删除第二个元素来修改链接表数据结构。然后更新第一个元素的指针部分,以反映对链接表数据结构的修改。对第一个元素的指针部分的更新包含一个原子操作。与对链接表数据结构修改的同时执行的,是对链接表数据结构的非同步遍历。在一个实施例中,遍历操作是一种非修改性操作,包含一个数据读和/或检索操作。
根据本发明的第二个方面,提供一种计算机可读介质,其上存储的指令序列被处理器执行时,使处理器执行如上所述的该方法的诸步骤。
根据本发明的第三个方面,提供一种面向对象的编程环境中的链接表对象。该对象包括一种链接表数据结构和一种通过插入或删除第一个元素来修改链接表数据结构的修改方法。该对象还包括一种为了反映修改方法对链接表数据结构的修改而对第二个元素的指针部分进行更新的更新方法。该更新方法执行的更新步骤中包含一个原子操作。该对象还包括一种遍历方法,在通过修改方法对链接表数据结构修改的同时,执行对链接表数据结构的非同步遍历。遍历可作为原子操作对第一个元素的指针部分进行检查。
阅读下文中的附图、详细说明和权利要求,本发明的其它特点也显而易见。
本发明是通过举例说明的,并不局限于附图中的各图示。附图中用类似的参照号来标示一些成分,其中:
图1是表示在面向对象的程序环境中运行的多线程程序的框图。
图2是链接表数据结构的图解表示。
图3a和3b的示意图分别表示对图2的链接表数据结构进行的元素插入和删除操作。
图4是一种按照本发明管理链接表数据结构的方法的流程图。
图5是表示一种散列表的结构的框图。
图6是表示按照本发明的一个实施例构造的一系列散列表对象的框图。
图7是表示一个计算机系统的框图,该系统包括一种计算机可读介质,其上存储的指令序列被处理器执行时,使处理器执行按照本发明一个实施例的管理链接表数据结构的方法。
现在说明一种计算机实现的管理链接表数据结构的方法。为了解释的需要,以下说明中陈述了许多具体细节,目的是透彻地阐明本发明。不过本领域的熟练人员显然清楚,没有这些具体细节,本发明也可以实施。特别是,尽管下文描述的一个示范实施例是用一种面向对象的编程语言实现的,但是本发明并不受这种或任何其它类型的编程语言的限制。
参见图1,图中显示的用一种面向对象的编程语言设计的多线程程序(10)的框图,该编程语言例如是美国加州Mountain View的Sun Mircosystems公司开发的JavaTM程序设计语言。如图所示,程序10保持着一个线程队列12,包括14b、14c和14d,它们都要求访问对象16。图中示出线程14a正在访问对象16。多线程程序10的特点在于每个线程14共享数据,因此可以访问相同的数据和变量,这些数据和变量则可以包容在诸如对象16的某个对象中。例如,采用JavaTM程序设计语言,Java虚拟机(JVM)任何时刻都可以支持多个执行线程。这些线程中每一个都独立地执行对在共享内存中存储的值和对象进行操作的Java程序码。支持多线程的手段可以是,采用多个硬件处理器、对单一硬件处理器的时间分片、对多个硬件处理器的时间分片。
活动的线程14可以对其引用的任何对象进行访问。例如,线程14a~d中的每个线程都有一个指向对象16的索引。如果两个或更多的线程访问同一个对象时,可以想见,这些线程所执行的操作可能会相互冲突,导致有关对象的不可靠或者某个或多个线程的操作不正常。为了解决这个问题,通常的做法是规定多线程对共享对象进行“同步”访问。具体来说,“同步”一词指保证一个线程没有中断地完成对一个对象-无论变量还是数据-的操作的能力。信号量和mutexes可以用来实现同步。另一种替代方法是,可以通过采用“监控器”来获得线程访问之间的同步,其中监控器是这样的高级工具,它们只允许每次有一个线程执行由相关监控器保护的一部分代码。在JavaTM语言中,将能够封锁线程、并在其变得可用时再次通知被封锁线程的对象,称为监控器对象。例如参见图1,对象16就可以是个监控器对象,如果这样,当线程14a访问该对象时,它就封锁线程14b~c,当线程14a完成对对象16的访问时,它将通知线程队列12。由其它线程作出的对访问某对象的封锁这个操作,称为进行“锁定”(lock);由另一个线程作出的再次允许访问某对象这个操作,称为“解锁”(unlocked)操作。
应当理解,执行同步化方法(method)的线程存在着性能上的缺陷,因为任何时刻只允许由一个线程访问某个对象,某些并发操作会被禁止。
对象16内的包含的通常的数据结构类型是图2所示的链接表数据结构20。链接表数据结构20包含一个有序的元素序列22a~22n,这种结构有利于快速地向序列插入元素或从其删除元素。每个元素22包括数据项24和指向链接表数据结构20中下一个顺序元素22的指针26。数据结构20中的最后元素22n的指针内容为零,表示该表的结尾。
图3a和3b表示对链接表数据结构20的修改。具体来说,图3a表示将元素22(n+1)插入数据结构20中22(n)与22(n+2)之间。图3b类似地表示将元素22(n+1)从链接表数据结构20删除。首先参见图3a,能访问一个包括链接表数据结构20的对象的活动线程可能希望插入元素22(n+1)。向链接表数据结构20插入(添加)这个元素要求与元素22(n+1)要插入位置直接相邻的前一个元素22(n)的指针内容,由原来指向顺序元素22(n+2)更新为指向新近插入的元素22(n+1)。元素22(n)的指针的更新由箭头28表示。元素22(n+1)的指针也必须设置为指向元素22(n+2)。
在本发明的一个实施例中,每个指针26含有一个32位地址。如果假设两个线程会同时访问链接表数据结构20,显然需要在程序中进行同步。具体来说,假设第一个线程插入元素22(n+1),将元素22(n)的指针26内容更新为指向元素22(n+1)。与此同时,第二个线程可能正在通过检查由指针规定的数据路径执行对数据结构20的遍历操作。具体来说,第二个线程可能正在遍历数据结构20,目的是检索某预定数据项24。由于第二个线程要依靠每个元素的指针来指引其向序列中下一个元素的搜索,所以不难理解,对部分改变了的指针的读操作,会对第二个线程对数据结构20的遍历产生严重错误。为了防止发生上述情况,通常做法是对访问链接表数据结构20的对象的方法(methods of objects)进行同步,以便任意时刻只有一个线程或方法能访问数据结构20。具体来说,可以利用同步来锁定引用链接表数据结构的数据结构,诸如散列表,或者直接锁定链接表数据结构20本身。然而应当明白,每次只允许一个线程访问链接表数据结构并不能达到最佳效能。为了理解本发明的重要性,首先必须考察在链接表数据结构20上的三种可能操作,它们是:
1.插入(添加)操作。如图3a所示,该操作将元素添加到链接表数据结构20。
2.移出(删除)操作。如图3b所示,该操作从链接表数据结构20删除元素。
3.遍历操作。该操作检查链接表数据结构20内元素的内容,目的是确定其中是否存在某数据项和/或可能提取这个数据项。
遍历操作与插入和删除操作的不同在于它不会改变数据结构20。本发明提出的方法中,对链接表数据结构20的非改变性遍历是与其它遍历操作以及与修改操作不同步的。采用非同步遍历操作的优点在于修改和遍历操作可以同时进行,并且可以同时对链接表数据结构20进行许多非同步的遍历操作。这样,在有多个线程主要对链接表数据结构20进行遍历操作的程序中,就能由大量的这种线程同时地访问数据结构20。通过规定由线程对元素22的指针26的原子读写操作,方便了非同步遍历操作的实现。具体来说,原子操作是功能上不能分割的操作,因此是有完成保证的操作。现在具体参照图3a和3b来说明本发明的方法。图3a所示的插入方法是(与其它同步方法)同步的,主要包含如下步骤:
1.检查要插入的元素是否在链接表数据结构20中已经存在。如果是,则插入操作中止。
2.在一个原子操作中,将被插入元素22(n+1)的指针更新为指向下一个顺序元素22(n+2)。此步骤完成时,两个元素22(n)和22(n+1)的指针都指向元素22(n+2)。
3.在一个原子操作中,将元素22(n)的指针更新为指向被插入元素22(n+1)。
与此类似,从链接表数据结构20删除元素22的同步方法主要包含如下步骤:
1.执行检查操作,确定链接表中是否确实存在有关数据项;
2.在一个原子操作中,元素22(n)的指针更新为指向元素22(n+2)。
应当注意的是在上述执行的操作中,对元素22的指针26的修改操作包含原子操作。因此就能保障在插入或删除操作期间任何对链接表数据结构20进行的遍历操作的方法都能检查有效的数据路径。正是这种对有效数据路径的保障,便利了采用非同步遍历操作的方法对链接表数据结构20的访问。然而,在一个实施例中,要理解的是仍然需要同步的修改操作来防止这些修改操作之间的冲突。这样,采用非同步遍历操作的方法就能允许包含这些非同步遍历方法的多个线程同时访问单一的链接表数据结构20,从而优化了计算机程序的性能。
本发明进一步特别适合应用于能够实现所谓的“标记与清除无用存储单元收集”(mark and sweep garbage collection)的程序设计语言。具体来说,这种标记与清除无用存储单元收集技术,不要求采用引用计数器机制来保持对某特定对象的引用的跟踪。采用引用计数的无用存储单元收集收集方案,要求用同步操作,并会因此限制用本发明方法执行同步无用存储单元收集操作而取得的性能优点。
现在参见图4,图中表示了一种按照本发明管理含有许多元素22的链接表数据结构的方法30。该方法从步骤32开始后,并行地执行两组操作。具体来说,方法30允许第一个线程在步骤34通过插入或删除元素22来修改链接表数据结构20。然后,方法30继续到步骤36,原子地修改数据结构20中有关元素22的指针,以反映步骤34所作的修改。在本发明的一个实施例中,用于对指针26进行原子修改操作和读取操作的程序设计语言是JavaTM程序设计语言。在执行步骤34和36的同时,本发明的方法30允许在步骤38同时执行任意次数的对链接表数据结构20的非同步遍历操作。
图5表示一种散列表40,该表中有许多项或散列表元,每个散列表元分别指向一个链接表数据结构20。在散列表数据结构中,作为对象的数据项(例如雇员纪录)是用键字来标识的。例如,链接表数据结构20a的第一个元素22的数据项是由键字“AAA”标识的。散列表40由键字计算出一个整数值,称为散列码。因此由示例中的键字“AAA”生成的散列码为零(0)。因此用散列表40便于生成紧凑的阵列索引。所含键字生成了相同散列码的数据项被视为包容在同一个散列表元中,并且可能包含诸如图5所示的任一种链接表数据结构20。本发明可用于管理散列表40所引用的链接表数据结构20。
图6表示根据本发明的一系列对象50,它们包含类52的对象。图中的每个对象50都包含一个指向许多链接表数据结构20的散列表数据结构40。每个对象进一步包括三个非同步遍历方法,即“CONTAINS”(包含)方法60、“CONTAINS KEY”(包含键字)方法62和“GET”(读取)方法64。“CONTAINS”方法60测试线程提供的键字是否与散列表数据结构40中的特定值匹配。“CONTAINSKEY”方法62测试特定对象是否是散列表数据结构40中的键字,而“GET”方法64向其键字在散列表数据结构40有匹配值的线程返回一个数据项。每个对象进一步包括一个同步“PUT”(插入)方法66,它负责按照上文所述方法向链接表数据结构20插入元素22。每个对象50还包括一个同步“REMOVE”(删除)方法68,它负责按照上文所述方法从链接表数据结构20删除元素22。当然应当明白,上述的对象50仅仅是示例性的,本发明原理可以运用到任意数量、种类各异的结构中。
现在参见图7,图中的计算机系统70包括处理器72、静态存储器74和主存储器76。处理器72与存储器74及76通过总线78互相通讯,并与许多外围设备通讯。外围设备包括视频显示器80(诸如阴极射线管CRT或液晶显示器LCD)、字母数字输入设备82(诸如键盘)、光标控制设备84(诸如鼠标器)、驱动单元86及其容纳的计算机可读介质88、信号发生设备90(例如一对扬声器)、网络接口设备94。本发明中的“计算机可读介质”一词系指可容纳在驱动器单元86的磁性存储介质、主存储器76、静态存储器74、处理器72或任何能从其中读取数据用于处理器72执行的其它介质。散列表对象92中包含诸如上文讨论的方法,如图所述,散列表对象92全部或部分地驻留在计算机可读介质88、主存储器76或处理器72本身中。散列表对象92包括一个指令序列,该指令序列被处理器72执行时,使处理器72至少执行上文介绍图4时所述的步骤。
网络接口设备94可以是调制解调器、网络适配器卡或其它任何将计算机系统70与计算机网络连接的设备。网络接口设备94可用于生成或接收所编码的计算机数据信号的载波。计算机数据信号可被翻译后生成执行时实现本发明的程序码。
本文至此描述了一种管理链接表数据结构的方法。尽管本发明是结合具体的示范性实施例说明的,显然,在不偏离本发明的精神和范围的情况下能对这些实施例作出各种修改和改进。所以本说明书和各附图应视为是示例性的而不是限制性的。
Claims (24)
1.一种计算机实现的管理链接表数据结构的方法,其中,链接表数据结构包括由数据部分和指针部分组成的第一个元素,该方法包括下列步骤:
修改链接表数据结构;
更新第一个元素的指针部分以反映对链接表数据结构的修改,更新步骤包含一个原子操作;
在对链接表数据结构修改的同时,执行对链接表数据结构的非同步遍历。
2.权利要求1的计算机实现的方法,包括同时执行多个对链接表数据结构的非同步遍历的步骤。
3.权利要求1的计算机实现的方法,其中,修改链接表数据结构的步骤包括向链接表数据结构添加第二个元素,其中的原子操作包括将第一个元素的指针部分修改为指向第二个元素。
4.权利要求1的计算机实现的方法,其中的原子修改操作包括将第一个元素的指针部分修改为指向第三个元素。
5.权利要求1的计算机实现的方法,其中,修改链接表数据结构的步骤包括从链接表数据结构删除第二个元素,其中的原子操作包括将第一个元素的指针部分从指向第二个元素修改为指向第三个元素。
6.权利要求1的计算机实现的方法,包括在修改和更新操作的同时对链接表数据结构执行标记与清除无用存储单元收集操作的步骤。
7.权利要求1的计算机实现的方法,其中,修改链接表数据结构的步骤是一个同步操作。
8.权利要求1的计算机实现的方法,其中,非同步遍历包含提取链接表数据结构内某元素的数据部分的提取操作。
9.在一种面向对象的编程环境中的链接表对象,包括:
一个包括多个元素的链接表数据结构,其中每个元素各自都有数据部分和指针部分;
一种通过插入或删除第一个元素来修改链接表数据结构的修改方法;
一种为反映对链接表数据结构的修改而用原子修改操作更新第二个元素的指针部分的更新方法;
一种在用修改方法对链接表数据结构修改的同时,执行对链接表数据结构的非同步遍历的遍历方法。
10.一种计算机可读介质,其上存储的指令序列被处理器执行时,使处理器执行以下步骤:
通过插入或删除第二个元素,修改含有由数据部分和指针部分组成的第一个元素的链接表数据结构;
更新第一个元素的指针部分,以反映对链接表数据结构的修改,更新步骤包含一个原子操作;
在对链接表数据结构修改的同时,执行对链接表数据结构的非同步遍历。
11.权利要求10的计算机可读介质,其存储的指令序列使处理器在对链接表数据结构修改的同时,执行多个对链接表数据结构的非同步遍历。
12.权利要求10的计算机可读介质,其存储的指令序列使处理器向链接表数据结构添加第二个元素,其中的原子操作包括将第一个元素的指针部分修改为指向第二个元素。
13.权利要求10的计算机可读介质,其中的原子操作包括将第一个元素的指针部分修改为指向第三个元素。
14.权利要求10的计算机可读介质,其存储的指令序列使处理器从链接表数据结构删除第二个元素,更新步骤包含原子地将第一个元素的指针部分从指向第一个元素修改为指向第三个元素的步骤。
15.权利要求10的计算机可读介质,包括在修改和更新操作的同时对链接表数据结构执行标记与清除无用存储单元收集的操作的步骤。
16.权利要求10的计算机可读介质,其中的修改链接表数据结构的步骤是同步操作。
17.一种计算机实现的管理链接表数据结构的方法,其中链接表数据结构一个由数据部分和指针部分组成的元素,该方法包括下列步骤:
对链接表数据结构执行第一种操作;
在执行第一种操作的同时,执行对链接表数据结构的非同步遍历,其中非同步遍历包括执行对元素的指针部分的读操作,该读操作按原子操作执行。
18.权利要求17的计算机实现的方法,其中的第一种操作是对链接表数据结构的进一步非同步遍历。
19.权利要求17的计算机实现的方法,其中的第一种操作是对链接表数据结构的进一步同步修改。
20.一种计算机可读介质,其上存储的指令序列被处理器执行时,使处理器执行以下步骤:
对链接表数据结构执行第一种操作;
在执行第一种操作的同时,执行对链接表数据结构的非同步遍历,其中非同步遍历包括执行对元素的指针部分的读操作,该读操作按原子操作执行。
21.权利要求20的计算机可读介质,其中的第一种操作是对链接表数据结构的非同步遍历。
22.权利要求20的计算机实现的方法,其中的第一种操作是对链接表数据结构的进一步同步修改。
23.一种体现为载波并代表一个指令序列的计算机数据信号,该指令序列被处理器执行时,使处理器执行以下步骤:
通过插入或删除第二个元素来修改链接表数据结构,其中链接表数据结构包括含有数据部分和指针部分的第一个元素;
更新第一个元素的指针部分以反映对链接表数据结构的修改,更新步骤包含一个原子操作;
在对链接表数据结构修改的同时,执行对链接表数据结构的非同步遍历。
24.一种体现为载波并代表一个指令序列的计算机数据信号,该指令序列被处理器执行时,使处理器执行以下步骤:
对包含一个由数据和指针部分组成的元素的链接表数据结构执行第一种操作;
在执行第一种操作的同时,执行对链接表数据结构的非同步遍历,其中非同步遍历包括执行对元素的指针部分的读操作,该读操作按原子操作执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/887,339 | 1997-06-30 | ||
US08/887,339 US5924098A (en) | 1997-06-30 | 1997-06-30 | Method and apparatus for managing a linked-list data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1236453A true CN1236453A (zh) | 1999-11-24 |
CN1145881C CN1145881C (zh) | 2004-04-14 |
Family
ID=25390933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB988011867A Expired - Fee Related CN1145881C (zh) | 1997-06-30 | 1998-06-30 | 管理链接表数据结构的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5924098A (zh) |
EP (1) | EP0932863A4 (zh) |
JP (1) | JP2002501649A (zh) |
KR (1) | KR20000068342A (zh) |
CN (1) | CN1145881C (zh) |
WO (1) | WO1999000725A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100424779C (zh) * | 2001-12-17 | 2008-10-08 | 汤姆森特许公司 | 具有用于减少信息载体平均存取时间的缓冲器的再现装置 |
CN101093450B (zh) * | 2006-06-19 | 2011-06-22 | 迈普通信技术股份有限公司 | 一种多cpu互斥的方法 |
CN105550339A (zh) * | 2015-12-23 | 2016-05-04 | 智慧方舟科技有限公司 | 一种在线预览文档的方法、装置和系统 |
Families Citing this family (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU731871B2 (en) | 1996-11-04 | 2001-04-05 | Sun Microsystems, Inc. | Method and apparatus for thread synchronization in object-based systems |
US6134627A (en) * | 1996-11-04 | 2000-10-17 | Sun Microsystems, Inc. | Thread synchronization in a computer controlled by an object-based program |
US6359899B1 (en) * | 1997-05-28 | 2002-03-19 | Lucent Technologies Inc. | Priority access for real-time traffic in contention-based networks |
US6178429B1 (en) * | 1997-11-26 | 2001-01-23 | Cisco Technology, Inc. | Mechanism for ensuring SCM database consistency on multi-part operation boundaries |
US6349322B1 (en) * | 1998-05-06 | 2002-02-19 | Sun Microsystems, Inc. | Fast synchronization for programs written in the JAVA programming language |
US6321276B1 (en) | 1998-08-04 | 2001-11-20 | Microsoft Corporation | Recoverable methods and systems for processing input/output requests including virtual memory addresses |
US6594701B1 (en) | 1998-08-04 | 2003-07-15 | Microsoft Corporation | Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data |
US6360220B1 (en) * | 1998-08-04 | 2002-03-19 | Microsoft Corporation | Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries |
US7409694B2 (en) * | 1998-09-09 | 2008-08-05 | Microsoft Corporation | Highly componentized system architecture with loadable virtual memory manager |
US8434099B2 (en) | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US6473820B1 (en) * | 1998-12-08 | 2002-10-29 | Sun Microsystems, Inc. | Method and apparatus for user level monitor implementation |
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
US7146354B1 (en) | 1999-06-18 | 2006-12-05 | F5 Networks, Inc. | Method and system for network load balancing with a compound data structure |
US6643706B1 (en) * | 1999-06-29 | 2003-11-04 | Cisco Technology, Inc. | Scaleable route redistribution mechanism |
US6785691B1 (en) * | 1999-10-13 | 2004-08-31 | Avaya Technology Corp. | Object oriented processing system and data sharing environment for applications therein |
WO2001033337A2 (en) * | 1999-11-01 | 2001-05-10 | Curl Corporation | System and method supporting property values as options |
DE60007771D1 (de) * | 1999-11-01 | 2004-02-19 | Curl Corp | System und verfahren zur unterstützung von optionentypenkontrolle |
WO2001033348A2 (en) * | 1999-11-01 | 2001-05-10 | Curl Corporation | System and method supporting mapping of option bindings |
EP1228428A2 (en) | 1999-11-01 | 2002-08-07 | Curl Corporation | System and method supporting nonlocal values |
AU1356501A (en) * | 1999-11-01 | 2001-06-06 | Curl Corporation | System and method supporting plural option data structures |
US6662225B1 (en) * | 1999-11-16 | 2003-12-09 | Ricoh Company, Ltd. | Remote system usage monitoring with flexible packaging of data |
US6484224B1 (en) | 1999-11-29 | 2002-11-19 | Cisco Technology Inc. | Multi-interface symmetric multiprocessor |
US6460028B1 (en) | 1999-12-03 | 2002-10-01 | T4Mupj2, Llc | System and method for data organization |
US6959425B1 (en) * | 1999-12-15 | 2005-10-25 | Sun Microsystems, Inc. | System and method for managing a scalable list of items for display |
US6745262B1 (en) * | 2000-01-06 | 2004-06-01 | International Business Machines Corporation | Method, system, program, and data structure for queuing requests having different priorities |
US6567974B1 (en) * | 2000-02-25 | 2003-05-20 | Sun Microsystems, Inc. | Small memory footprint system and method for separating applications within a single virtual machine |
US6557168B1 (en) * | 2000-02-25 | 2003-04-29 | Sun Microsystems, Inc. | System and method for minimizing inter-application interference among static synchronized methods |
WO2001082072A1 (en) * | 2000-04-21 | 2001-11-01 | Togethersoft Corporation | Methods and systems for generating source code for object-oriented elements |
US6735207B1 (en) | 2000-06-13 | 2004-05-11 | Cisco Technology, Inc. | Apparatus and method for reducing queuing memory access cycles using a distributed queue structure |
US6581063B1 (en) * | 2000-06-15 | 2003-06-17 | International Business Machines Corporation | Method and apparatus for maintaining a linked list |
US6983452B1 (en) * | 2000-11-03 | 2006-01-03 | Hewlett-Packard Development Company, L.P. | System and method for collecting system data using record based requests with tag lists and pausing all but one thread of a computer system |
US6735760B1 (en) | 2000-11-08 | 2004-05-11 | Sun Microsystems, Inc. | Relaxed lock protocol |
US7117502B1 (en) * | 2000-11-10 | 2006-10-03 | Sun Microsystems, Inc. | Linked-list implementation of a data structure with concurrent non-blocking insert and remove operations |
KR20020066496A (ko) * | 2001-02-12 | 2002-08-19 | 한국전자통신연구원 | 복합 피쳐를 처리하기 위한 지리정보 시스템 및 그 운용방법 |
US7031989B2 (en) * | 2001-02-26 | 2006-04-18 | International Business Machines Corporation | Dynamic seamless reconfiguration of executing parallel software |
US7228366B2 (en) * | 2001-06-29 | 2007-06-05 | Intel Corporation | Method and apparatus for deterministic removal and reclamation of work items from an expansion bus schedule |
US7161599B2 (en) | 2001-10-18 | 2007-01-09 | Microsoft Corporation | Multiple-level graphics processing system and method |
US7064766B2 (en) * | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US7443401B2 (en) | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US7619633B2 (en) | 2002-06-27 | 2009-11-17 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US6919891B2 (en) | 2001-10-18 | 2005-07-19 | Microsoft Corporation | Generic parameterization for a scene graph |
CA2472014C (en) * | 2001-11-01 | 2012-07-10 | Verisign, Inc. | Method and system for updating a remote database |
US8688853B2 (en) * | 2001-12-21 | 2014-04-01 | Agere Systems Llc | Method and apparatus for maintaining multicast lists in a data network |
US9218409B2 (en) * | 2002-06-04 | 2015-12-22 | Sap Se | Method for generating and using a reusable custom-defined nestable compound data type as database qualifiers |
US7020746B2 (en) * | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US7200542B1 (en) * | 2003-02-21 | 2007-04-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for biased identification of potential data sharing locations |
US7213244B2 (en) * | 2003-03-13 | 2007-05-01 | International Business Machines Corporation | Apparatus and method for distribution of work on a doubly linked list among processing threads |
US7486294B2 (en) | 2003-03-27 | 2009-02-03 | Microsoft Corporation | Vector graphics element-based model, application programming interface, and markup language |
US7088374B2 (en) | 2003-03-27 | 2006-08-08 | Microsoft Corporation | System and method for managing visual structure, timing, and animation in a graphics processing system |
US7466315B2 (en) | 2003-03-27 | 2008-12-16 | Microsoft Corporation | Visual and scene graph interfaces |
US7417645B2 (en) | 2003-03-27 | 2008-08-26 | Microsoft Corporation | Markup language and object model for vector graphics |
US8566292B2 (en) * | 2003-04-14 | 2013-10-22 | Schneider Electric It Corporation | Method and system for journaling and accessing sensor and configuration data |
US20040221272A1 (en) * | 2003-04-30 | 2004-11-04 | Gansha Wu | Apparatus and methods for desynchronizing object-oriented software applications in managed runtime environments |
US8549043B2 (en) | 2003-10-13 | 2013-10-01 | Intel Corporation | Concurrent insertion of elements into data structures |
US7511718B2 (en) | 2003-10-23 | 2009-03-31 | Microsoft Corporation | Media integration layer |
US7953859B1 (en) * | 2004-03-31 | 2011-05-31 | Avaya Inc. | Data model of participation in multi-channel and multi-party contacts |
US8977651B2 (en) * | 2004-04-14 | 2015-03-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for multi-process access to a linked-list |
US7451146B2 (en) * | 2004-06-30 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Almost non-blocking linked stack implementation |
US10002325B2 (en) * | 2005-03-30 | 2018-06-19 | Primal Fusion Inc. | Knowledge representation systems and methods incorporating inference rules |
US8849860B2 (en) | 2005-03-30 | 2014-09-30 | Primal Fusion Inc. | Systems and methods for applying statistical inference techniques to knowledge representations |
US9104779B2 (en) | 2005-03-30 | 2015-08-11 | Primal Fusion Inc. | Systems and methods for analyzing and synthesizing complex knowledge representations |
WO2007037710A2 (en) * | 2005-09-30 | 2007-04-05 | Manabars Ip Limited | A computational device for the management of sets |
US7739234B1 (en) * | 2005-12-15 | 2010-06-15 | Teradata Us, Inc. | Techniques for synchronizing data store tables |
KR100763200B1 (ko) * | 2006-02-24 | 2007-10-04 | 삼성전자주식회사 | 인터럽트 가능한 스레드 동기화 방법 및 장치 |
US8510404B2 (en) * | 2006-04-03 | 2013-08-13 | Kinglite Holdings Inc. | Peer to peer Synchronization system and method |
US7536428B2 (en) * | 2006-06-23 | 2009-05-19 | Microsoft Corporation | Concurrent read and write access to a linked list where write process updates the linked list by swapping updated version of the linked list with internal list |
US20080240227A1 (en) * | 2007-03-30 | 2008-10-02 | Wan Wade K | Bitstream processing using marker codes with offset values |
US8209350B1 (en) * | 2007-09-12 | 2012-06-26 | The Mathworks, Inc. | Storing and maintaining consistency among folios holding associated information |
US8375062B2 (en) * | 2007-11-19 | 2013-02-12 | Oracle America, Inc. | Simple optimistic skiplist |
JP4585579B2 (ja) * | 2008-04-24 | 2010-11-24 | 株式会社日立製作所 | データ管理方法、データ管理プログラム、及び、データ管理装置 |
US8429143B2 (en) * | 2008-04-25 | 2013-04-23 | International Business Machines Corporation | Methods and systems for improving hash table performance |
US8515965B2 (en) * | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US9652440B2 (en) | 2010-05-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Concurrent utilization of a document by multiple threads |
US10474647B2 (en) | 2010-06-22 | 2019-11-12 | Primal Fusion Inc. | Methods and devices for customizing knowledge representation systems |
JP5094938B2 (ja) * | 2010-09-27 | 2012-12-12 | ヤフー株式会社 | データベース装置 |
US9563971B2 (en) | 2011-09-09 | 2017-02-07 | Microsoft Technology Licensing, Llc | Composition system thread |
US9436504B2 (en) * | 2012-05-09 | 2016-09-06 | Nvidia Corporation | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor |
US10725997B1 (en) * | 2012-06-18 | 2020-07-28 | EMC IP Holding Company LLC | Method and systems for concurrent collection and generation of shared data |
US20150186068A1 (en) * | 2013-12-27 | 2015-07-02 | Sandisk Technologies Inc. | Command queuing using linked list queues |
US9684737B2 (en) | 2014-02-18 | 2017-06-20 | International Business Machines Corporation | Accessing an N-way linked list |
US9305036B2 (en) | 2014-03-27 | 2016-04-05 | International Business Machines Corporation | Data set management using transient data structures |
IL242218B (en) | 2015-10-22 | 2020-11-30 | Verint Systems Ltd | A system and method for maintaining a dynamic dictionary |
IL242219B (en) * | 2015-10-22 | 2020-11-30 | Verint Systems Ltd | System and method for keyword searching using both static and dynamic dictionaries |
US10146684B2 (en) * | 2016-10-24 | 2018-12-04 | Datrium, Inc. | Distributed data parallel method for reclaiming space |
US10311039B2 (en) | 2016-12-07 | 2019-06-04 | International Business Machines Corporation | Optimized iterators for RCU-protected skiplists |
US10872290B2 (en) | 2017-09-21 | 2020-12-22 | Raytheon Company | Neural network processor with direct memory access and hardware acceleration circuits |
US11080251B1 (en) * | 2017-10-23 | 2021-08-03 | Comodo Security Solutions, Inc. | Optimization of memory usage while creating hash table |
CN110765156A (zh) | 2018-07-09 | 2020-02-07 | 慧荣科技股份有限公司 | 链表搜索装置及方法 |
TWI727185B (zh) * | 2018-07-09 | 2021-05-11 | 慧榮科技股份有限公司 | 鏈結串列搜索裝置及方法 |
US11023374B2 (en) | 2018-07-09 | 2021-06-01 | Silicon Motion, Inc. | Apparatus and method and computer program product for controlling data access |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4149243A (en) * | 1977-10-20 | 1979-04-10 | International Business Machines Corporation | Distributed control architecture with post and wait logic |
JPH0318935A (ja) * | 1989-06-15 | 1991-01-28 | Hitachi Ltd | データリストに対するアクセスの直列化方式 |
US5168554A (en) * | 1989-10-13 | 1992-12-01 | International Business Machines Corporation | Converting trace data from processors executing in parallel into graphical form |
US5293600A (en) * | 1990-04-06 | 1994-03-08 | International Business Machines Corporation | Counter and flux bit locking for very fast shared serialization of shared data objects |
JPH04284548A (ja) * | 1991-03-14 | 1992-10-09 | Nec Corp | データベース排他制御方式 |
US5295262A (en) * | 1991-05-16 | 1994-03-15 | International Business Machines Corporation | Read-only access without blocking via access vectors |
US5319778A (en) * | 1991-07-16 | 1994-06-07 | International Business Machines Corporation | System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists |
GB9204450D0 (en) * | 1992-03-02 | 1992-04-15 | Ibm | Concurrent access to indexed data files |
US5442758A (en) * | 1993-07-19 | 1995-08-15 | Sequent Computer Systems, Inc. | Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring |
-
1997
- 1997-06-30 US US08/887,339 patent/US5924098A/en not_active Expired - Lifetime
-
1998
- 1998-06-30 JP JP50984299A patent/JP2002501649A/ja not_active Ceased
- 1998-06-30 KR KR1019997001519A patent/KR20000068342A/ko not_active Application Discontinuation
- 1998-06-30 CN CNB988011867A patent/CN1145881C/zh not_active Expired - Fee Related
- 1998-06-30 WO PCT/US1998/013652 patent/WO1999000725A1/en not_active Application Discontinuation
- 1998-06-30 EP EP98934219A patent/EP0932863A4/en not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100424779C (zh) * | 2001-12-17 | 2008-10-08 | 汤姆森特许公司 | 具有用于减少信息载体平均存取时间的缓冲器的再现装置 |
CN101093450B (zh) * | 2006-06-19 | 2011-06-22 | 迈普通信技术股份有限公司 | 一种多cpu互斥的方法 |
CN105550339A (zh) * | 2015-12-23 | 2016-05-04 | 智慧方舟科技有限公司 | 一种在线预览文档的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
US5924098A (en) | 1999-07-13 |
CN1145881C (zh) | 2004-04-14 |
EP0932863A1 (en) | 1999-08-04 |
WO1999000725A1 (en) | 1999-01-07 |
EP0932863A4 (en) | 2004-10-27 |
KR20000068342A (ko) | 2000-11-25 |
JP2002501649A (ja) | 2002-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1145881C (zh) | 管理链接表数据结构的方法和装置 | |
US5261088A (en) | Managing locality in space reuse in a shadow written B-tree via interior node free space list | |
Ellen et al. | Non-blocking binary search trees | |
Valois | Lock-free linked lists using compare-and-swap | |
US11080260B2 (en) | Concurrent reads and inserts into a data structure without latching or waiting by readers | |
US5430869A (en) | System and method for restructuring a B-Tree | |
US5553303A (en) | Data processing system for dynamically switching access control process and for performing recovery process | |
US6026406A (en) | Batch processing of updates to indexes | |
EP0336035B1 (en) | Tree structure database system | |
Carey et al. | Storage management for objects in EXODUS | |
US5495609A (en) | System and method for managing concurrent access to data files consisting of data entries referenced by keys comprising sequence of digits | |
US5893120A (en) | Methods and apparatus for information storage and retrieval using a hashing technique with external chaining and on-the-fly removal of expired data | |
US7716182B2 (en) | Version-controlled cached data store | |
US7533138B1 (en) | Practical lock-free doubly-linked list | |
WO2020234719A1 (en) | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems | |
EP0362709A2 (en) | Method for obtaining access to data structures without locking | |
Wei et al. | Constant-time snapshots with applications to concurrent data structures | |
US6122645A (en) | System and method for physically versioning data in a main memory database | |
US8768889B1 (en) | Method and apparatus for performing lock-free updates in a linked list | |
Pellegrini et al. | Transparent and efficient shared-state management for optimistic simulations on multi-core machines | |
US20030051230A1 (en) | Code management software fast transactions using state table technology | |
Vitter | An efficient I/O interface for optical disks | |
Wang et al. | DHash: dynamic hash tables with non-blocking regular operations | |
Wei et al. | Practically and theoretically efficient garbage collection for multiversioning | |
CN115905246B (zh) | 基于动态压缩前缀树的kv缓存方法与装置 |
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 | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |