JP2002501649A - リンク済みリストのデータ構造を管理する方法および装置 - Google Patents

リンク済みリストのデータ構造を管理する方法および装置

Info

Publication number
JP2002501649A
JP2002501649A JP50984299A JP50984299A JP2002501649A JP 2002501649 A JP2002501649 A JP 2002501649A JP 50984299 A JP50984299 A JP 50984299A JP 50984299 A JP50984299 A JP 50984299A JP 2002501649 A JP2002501649 A JP 2002501649A
Authority
JP
Japan
Prior art keywords
linked list
data structure
list data
computer
pointer
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.)
Ceased
Application number
JP50984299A
Other languages
English (en)
Inventor
クラッジ,ケヴィン・エル
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2002501649A publication Critical patent/JP2002501649A/ja
Ceased legal-status Critical Current

Links

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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 リンク済みリストのデータ構造(20)を管理する方法が開示されている。このリンク済みリストのデータ構造(20)は、データ項目(24a、24b…24n)および順次続くエレメントへのポインタ(26a、26b…26n)それぞれ含むいくつかのエレメント(22a、22b…22n)を有する。この方法では、リンク済みリストのデータ構造(20)に対する同時かつ非同期トラバース動作を可能にしながら、エレメントをそこに挿入する、またはそこから除去することによってリンク済みリストのデータ構造(20)を修正する(34)ことが可能となる。具体的に言うと、この方法では、リンク済みリストのデータ構造(20)内のエレメント(24a、24b…24n)のポインタ(26a、26b…26n)をアトミック動作を使用して修正し(36)、リンク済みリストのデータ構造(20)に行われた任意の修正を反映する必要がある。アトミック動作を利用してポインタ(26a、26b…26n)を更新することで、非同期トラバース動作(38)が有効データ・パスを検査することが保証される。

Description

【発明の詳細な説明】 リンク済みリストのデータ構造を管理する方法および装置発明の分野 本発明は一般に、コンピュータ・ソフトウェア・プログラムの分野に関し、詳 細には、コンピュータ・プログラムによって維持およびアクセスされるリンク済 みリストのデータ構造を管理する方法に関する。背景 リンク済みリストのデータ構造は、データ・エレメントのシーケンスを格納し 、データ・エレメントを迅速にこれらのシーケンスに追加し、それらから除去す ることができる。リンク済みリストのデータ構造は、その各エレメントが、リン ク済みリスト中の次の一連のエレメントへのポインタを含むことを特徴とする。 したがって、リンク済みリストのデータ構造へのエレメントを追加する、または そこからエレメントを除去したときには、直前のエレメントのポインタを更新し 、リンク済みリストのデータ構造の修正を反映させなければならないことが理解 されよう。 マルチスレッド・プログラムはいくつかのスレッドを含み、そのうちのいくつ かが特定のリンク済みリストのデータ構造へのアクセスを必要とすることもある 。こうしたスレッドは、GETなどの非修正動作、またはADDなどの修正動作 をリンク済みリストのデータ構造に対して実行する。いくつかのスレッドからリ ンク済みリストのデータ構造のようなオブジェクトへの同時アクセスを防止する ために、このようなスレッドでは、目標オブジェクトにロック処置を実行し、そ れにより、活動中のメソッドがそのオブジェクトを再度ロック解除するまで、そ の他任意のメソッドが目標オブジェクトにアクセスすることを防止する、いわゆ る「同期」メソッドの実施が一般に行われている。 目標オブジェクトがリンク済みリストのデータ構造である場合には、このよう にこのデータ構造全体は、通常は同期メソッドが完了するまでそのメソッドによ ってロックされる。したがって、様々なスレッドからリンク済みリストのデータ 構造への同時アクセスは禁止される。発明の概要 本発明の第1の態様によれば、リンク済みリストのデータ構造を管理する方法 が提供される。リンク済みリストのデータ構造は、データ部分およびポインタ部 分を両方とも有する第1エレメントを含む。この方法は、第2エレメントを挿入 または除去することによってリンク済みリストのデータ構造を修正することを必 要とする。第1エレメントのポインタ部分は更新され、リンク済みリストのデー タ構造の修正を反映する。この第1エレメントのポインタ部分の更新は、アトミ ック動作を含む。リンク済みリストのデータ構造の修正と同時に、リンク済みリ ストのデータ構造の非同期トラバースが実行される。1実施態様では、トラバー ス動作は非修正動作であり、データの読取りおよび/または検索動作を含む。 本発明の第2の態様によれば、プロセッサによって実行されたときにそのプロ セッサに上述の方法の各段階を実行させる一連の命令を記憶した、コンピュータ 可読媒体が提供される。 本発明の第3の態様によれば、オブジェクト指向プログラミング環境中でリン ク済みリストオブジェクトが提供される。このオブジェクトは、リンク済みリス トのデータ構造、および第1エレメントの挿入または除去によってリンク済みリ ストのデータ構造を修正する修正メソッドを含む。このオブジェクトは、第2エ レメントのポインタ部分を更新して修正メソッドによってリンク済みリストのデ ータ構造に行われた修正を反映する更新メソッドも含む。この更新メソッドによ って実行される更新段階は、アトミック動作を含む。このオブジェクトは、修正 メソッドによるリンク済みリストのデータ構造の修正と同時にリンク済みリスト のデータ構造の非同期トラバースを実行するトラバース・メソッドも含む。この トラバースは、アトミック動作として第1エレメントのポインタ部分の検査を実 行することができる。 本発明のその他の特徴は、以下の添付の図面、詳細な説明、および請求の範囲 から明らかになるであろう。図面の簡単な説明 本発明を、制限ではなく例示を目的として、添付の図面の各図に図示する。図 では同じ参照符がいくつかの要素を指す。 第1図は、オブジェクト指向プログラム環境で動作するマルチスレッド・プロ グラムを示すブロック図である。 第2図は、リンク済みリストのデータ構造を示す概略図である。 第3a図および第3b図は、第2図に示すリンク済みリストのデータ構造に対 して実行されるエレメント挿入動作およびエレメント除去動作をそれぞれ示す概 略図である。 第4図は、本発明の1実施形態によるリンク済みリストのデータ構造を管理す る方法を示す流れ図である。 第5図は、ハッシュ・テーブルの構造を示すブロック図である。 第6図は、本発明の1実施形態に従って構築された一連のハッシュ・テーブル ・オブジェクトを示すブロック図である。 第7図は、コンピュータ・システムのプロセッサによって実行されたときに、 本発明の1実施形態によるリンク済みリストのデータ構造を管理する方法をその プロセッサに実行させる一連の命令を記憶したコンピュータ可読媒体を含むコン ピュータ・システムを示すブロック図である。詳細な説明 リンク済みリストのデータ構造を管理するコンピュータ実施方法について記述 する。以下の記述では、説明を目的としていくつかの特定の詳細を記載し、本発 明が完全に理解されるようにする。ただし、これらの詳細を用いずに本発明を実 施することができることは当業者には明らかであろう。具体的に言うと、オブジ ェクト指向プログラミング言語で実施される1つの例示的な実施形態を以下に記 載するが、本発明は、この言語またはその他任意のプログラミング言語タイプに 限定されるものではない。 第1図を参照すると、米国カリフォルニア州、Mountain Viewの Sun Microsystemsが開発したJavaTMプログラミング言語な どのオブジェクト指向プログラム言語で作成されたマルチスレッド・プログラム (10)のブロック図が示されている。プログラム10は、オブジェクト16へ のアクセスを必要とする、スレッド14b、14c、および14dからなるスレ ッド待ち行列12を維持する。スレッド14aは現在、オブジェクト16へのア クセスを有するものとして示されている。マルチスレッド・プログラム10は、 各スレッド14がデータを共用し、それによりオブジェクト16などのオブジェ クト中に含まれることがある共通のデータや変数へアクセスすることができるこ とを特徴とする。例えば、JavaTMプログラミング言語では、Java仮想計 算機(JVM)は、常に多数のスレッドの実行をサポートすることができる。こ れらのスレッドはそれぞれ独立して、共用メモリ中に常駐する値およびオブジェ クトに作用するJavaコードを実行する。複数のスレッドは、複数のハードウ ェア処理を有するか、単一のハードウェア・プロセッサをタイム・スライシング するか、または多数のハードウェア・プロセッサをタイム・スライシングするこ とによってサポートすることができる。 活動状態のスレッド14は、それが参照を有する任意のオブジェクトへアクセ スできる。例えば、スレッド14a〜dはそれぞれ、オブジェクト16への参照 を有する。2つ以上のスレッドが共通のオブジェクトへアクセスする場合には、 これらのスレッドそれぞれによって実行される動作が衝突し、関連するオブジェ クトの破壊、あるいは一方または両方のスレッドの誤動作につながることがある と考えられる。この問題に対処するために、複数のスレッドが共用するオブジェ クトに、「同期」アクセスを指定することが一般に行われている。具体的に言う と、「同期」という用語は、1つのスレッドが、オブジェクト、変数、またはデ ータに対する動作を中断されることなく確実に完了することができるようにする 能力を指す。セマフォまたはmutexesを使用して、同期を実施することが できる。別法として、スレッド・アクセスの間の同期は、関連するモニタによっ て保護されたコード領域を一度にただ1つのスレッドのみが実行することができ るようにする高水準機構である、「モニタ」を使用することによって得ることも できる。JavaTM言語では、スレッドをブロックし、その後それが利用可能に なったときにブロックしたスレッドに再度通知することができるオブジェクトは 、モニタ・オブジェクトと呼ばれる。例えば第1図を参照すると、オブジェクト 16がモニタ・オブジェクトになることもあり、その場合には、14aがオブジ ェクト16へアクセスするときには、スレッド14b〜cをブロックし、スレッ ド14aがオブジェクト16へのアクセスを完了したときにスレッド待ち行列1 2に通知することになる。その他のスレッドによるオブジェクトへのアクセスを ブロックする処置は、「ロック」を実行すると呼ばれ、別のスレッドによるオブ ジェクトへのアクセスを再度可能にする処置は、「ロック解除」動作と呼ばれる 。 同期メソッドを実行するスレッドには、常に単一のスレッドしかオブジェクト にアクセスすることができず、したがって特定の並行操作が禁止されることがあ るという性能の不利があることは理解されるであろう。 オブジェクト16内に組み込まれた共通データ構造タイプは第2図に示すリン ク済みリストのデータ構造20である。このリンク済みリストのデータ構造20 は、順序づけられたエレメント22a〜22nのシーケンスを含み、このシーケ ンスへのエレメントの迅速な挿入、およびそこからのエレメントの迅速な除去を 容易にする。各エレメント22は、データ項目24、およびリンク済みリストの データ構造20中の次の順次エレメント22へのポインタ26を含む。データ構 造20中の最後のエレメント22nは、リストの終了を表すヌル・ポインタを有 する。 第3a図および第3b図は、リンク済みリストのデータ構造20の修正形態を 示す図である。具体的に言うと、第3a図は、データ構造20中のエレメント2 2(n)と22(n+2)の間へのエレメント22(n+1)の挿入を示す図で ある。第3b図は、同様に、リンク済みリストのデータ構造20からのエレメン ト22(n+1)の除去を示す図である。まず第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)を指すようにセット しなければならない。 本発明の1実施形態では、各ポインタ26は32ビット・アドレスを含む。プ ログラム中での同期の必要は、2つのスレッドが同時にリンク済みリストのデー タ構造20にアクセスしているという仮定を考慮すると明らかとなる。具体的に 言うと、エレメント22(n+1)を挿入している第1スレッドが、エレメント 22(n)のポインタ26を更新し、新しく挿入されたエレメント22(n+1 )を指すようにしている場合を考慮する。これと同時に、第2スレッドが、それ によって指定されたデータ・パスを検査することによってデータ構造20のトラ バースを実行していることもある。具体的に言うと、第2スレッドが、所定のデ ータ項目24を検索するためにデータ構造20をトラバースしていることもある 。第2スレッドは各エレメントのポインタに依存してそれをシーケンス中の次の エレメントに向けるので、部分的に修正されたポインタ上で実行される読取り動 作は、第2スレッドによるデータ構造20のトラバースに不利であることが分か ることは理解されるであろう。上記に概説したシナリオを防止するために、リン ク済みリストのデータ構造20にアクセスするオブジェクトのメソッドを同期さ せ、ただ1つのスレッドまたはメソッドのみが常にデータ構造20へのアクセス を有するようにすることが一般に行われている。具体的に言うと、同期を利用し て、リンク済みリストのデータ構造を参照するハッシュ・テーブルなどのデータ 構造上で、またはリンク済みリストのデータ構造20上で直接、ロックを達成す ることができる。ただし、一度にただ1つのメソッドしかりンク済みリストのデ ータ構造にアクセスすることができないようにすることにより、最適な性能が提 供されなくなることは理解されるであろう。本発明の意義が理解されるようにす るには、リンク済みリストのデータ構造20に対して実行することができる下記 の3つの動作について考慮しなければならない。すなわち、 1.第3a図に示すようにエレメントがリンク済みリストのデータ構造20に 追加される、挿入(または追加)動作、 2.第3b図に示すようにエレメントがデータ構造20から除去される、除去 (または削除)動作、および 3.ある特定のデータ項目がその中に存在することを確定する、かつ/または 場合によってはこのようなデータ項目を検索するためにデータ構造20内のエレ メントの内容が検査される、トラバース動作。 トラバース動作は、データ構造20への修正が起こらないという点で、挿入動 作および除去動作とは区別される。本発明は、リンク済みリストのデータ構造2 0の非修正トラバースがその他のトラバース動作および修正動作と非同期である 方法を提案する。その非同期トラバース動作を実施すると、修正動作とトラバー ス動作が同時に起こることができ、またリンク済みリストのデータ構造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 へのアクセスを容易にするのは、この有効データ・パスの保証である。ただし、 1実施形態では、このような修正動作間の衝突を防止するために同期修正動作が 依然として必要であることは理解されるであろう。したがって、非同期トラバー ス・メソッドを使用することで、このような非同期トラバース・メソッドを組み 込むいくつかのスレッドが単一のリンク済みリストのデータ構造20に同時にア クセスすることが可能となり、こうしてコンピュータ・プログラムの性能を最適 化することが可能となる。 さらに本発明は、いわゆる「マーク/スイープ・ガーベージ・コレクション」 を実施する能力を有するプログラミング言語での使用に特に適している。具体的 に言うと、このようなマーク/スイープ・ガーベージ・コレクション技術では、 特定のオブジェクトへの参照のトラッキングを維持するために参照カウンタ機構 を実装する必要がない。参照カウントを利用するガーベージ・コレクション技法 は同期動作を必要とし、したがって同期ガーベージ・コレクション動作を実行す るときに、本発明が達成する性能上の利点を制限することがある。 次に第4図を参照すると、本発明によるいくつかのエレメント22を含むリン ク済みリストのデータ構造20を管理する方法30が示されている。この方法は 段階32から開始し、進行して2組の動作を並列に実行する。具体的に言うと、 方法30では、段階34で第1スレッドはエレメント22を挿入または除去する ことによってリンク済みリストのデータ構造20を修正することができる。次い で方法30は段階36に進み、データ構造20内の関連するエレメント22のポ インタをアトミックに修正し、段階34で行われた修正を反映する。本発明の1 実施形態では、ポインタ26のアトミックな修正および読取りを容易にするプロ グラミング言語は、JavaTMプログラミング言語である。段階34および36 を実行するのと同時に、本発明の方法30では、段階38で、リンク済みリスト のデータ構造20の任意数の非同期トラバース動作を並行して実行することがで きる。 第5図は、それぞれのリンク済みリストのデータ構造20をそれぞれ参照する ことができるいくつかのエントリまたはバケット42を含む、ハッシュ・テーブ ル40を示す図である。ハッシュ・テーブル・データ構造では、オブジェクトと なるデータ項目(例えば従業員記録)はキーで識別される。例えば、リンク済み リストのデータ構造20aの第1エレメント22中のデータ項目は、キー「AA A」で識別される。ハッシュ・テーブル40は、ハッシュ・コードと呼ばれる、 キーから得られる整数値を計算する。したがって、図示の例のキー「AAA」か ら生成されたハッシュ・コードはゼロ(0)となる。こうしてハッシュ・テーブ ル40は、短縮した配列指標の生成を容易にする。共通したハッシュ・コードが 生成されるキーを有するデータ項目は同一のバケットに入っているものと考えら れ、第5図に示すものなどのリンク済みリストのデータ構造20を含むことがで きる。本発明は、ハッシュ・テーブル40によって参照されるリンク済みリスト のデータ構造20を管理するために利用することができる。 第6図は、本発明による、クラス52のオブジェクトを含む一連のオブジェク ト50を示す図である。各オブジェクト50は、いくつかのリンク済みリストの データ構造20に指標を付けるハッシュ・テーブル構造40を含むものとして示 してある。各オブジェクトは、3つの非同期トラバース・メソッド、すなわち「 CONTAINS」メソッド60、「CONTAINS KEY」メソッド62 、および「GET」メソッド64をさらに含む。「CONTAINS」メソッド 60は、スレッドによって与えられたキーが、ハッシュ・テーブル・データ構造 40中の指定された値にマップされるかどうかをテストする。「CONTAIN S KEY」メソッド62は、指定されたオブジェクトがハッシュ・テーブル・ データ構造40中のキーであるかどうかをテストし、「GET」メソッド64 は、与えられたキーがハッシュ・テーブル・データ構造40中でマップされるデ ータ項目を戻す。各オブジェクトは、上述の方法論に従ってリンク済みリストの データ構造20中にエレメント22を挿入することができる、同期「PUT」メ ソッド66をさらに含む。各オブジェクト50は、上述の方法論に従ってリンク 済みリストのデータ構造20からエレメント22を除去することができる、同期 「REMOVE」メソッド68をさらに含む。もちろん、上述のオブジェクト5 0は単なる例示であり、本発明の原理は様々な構造の任意数のオブジェクトに適 用することができることは理解されるであろう。 次に第7図には、プロセッサ72、スタティック・メモリ74、およびメイン ・メモリ76を含むコンピュータ・システム70が示してある。プロセッサ72 ならびにメモリ74および76は、バス78を介して、互いに、またいくつかの 周辺機器と連絡している。上述の周辺機器には、ビデオ・ディスプレイ80(陰 極線管(CTR)や液晶ディスプレイ(LCD)など)、英数字入力装置82( キーボードなど)、カーソル制御装置84(マウスなど)、コンピュータ可読媒 体88を収容する駆動ユニット86、信号発生装置90(1対の音声スピーカな ど)、およびネットワーク・インタフェース装置94を含む。本発明では、「コ ンピュータ可読媒体」という用語は、駆動ユニット86、メイン・メモリ76、 スタティック・メモリ74、プロセッサ72、またはプロセッサ72が実行する ためのデータを得ることができるその他任意の媒体の中に収容することができる 、磁気記憶装置を指すものとする。上述のものなどのメソッドを含むハッシュ・ テーブル・オブジェクト92は、コンピュータ可読媒体88、メイン・メモリ7 6、またはプロセッサ72自体の中に完全または部分的に常駐するものとして示 されている。ハッシュ・テーブル・オブジェクト92は、プロセッサ72によっ て実行されたときに少なくとも第4図に関連して記述した段階をプロセッサ72 に実行させる、一連の命令を含む。 ネットワーク・インタフェース装置94は、モデム、ネットワーク・アダプタ ・カード、またはコンピュータ・システム70をコンピュータ・ネットワークに 結合するその他任意の装置にすることができる。ネットワーク・アクセス装置9 4を使用して、コンピュータ・データ信号がコード化された搬送波を発生または 受信することができる。コンピュータ・データ信号を解釈して、本発明を実施す るために実行することができるプログラム・コードを生成することができる。 このように、リンク済みリストのデータ構造を管理する方法について記述した 。特定の例示的な実施形態に関連して本発明を説明したが、本発明の広範な主旨 および範囲を逸脱することなくこれらの実施形態に様々な修正および変更を加え ることができることは明らかであろう。したがって、本明細書および図面は、制 限的なものではなく例示的なものと見なされたい。
───────────────────────────────────────────────────── 【要約の続き】

Claims (1)

  1. 【特許請求の範囲】 1.データ部分およびポインタ部分を含む第1エレメントを含むリンク済みリス トのデータ構造を管理するコンピュータ実施方法であって、 リンク済みリストのデータ構造を修正する段階と、 アトミック動作を含み、リンク済みリストのデータ構造の修正を反映するよう に第1エレメントのポインタ部分を更新する段階と リンク済みリストのデータ構造の修正と同時にリンク済みリストのデータ構造 の非同期トラバースを実行する段階と を含む方法。 2.リンク済みリストのデータ構造の複数の非同期トラバースを同時に実行する 段階を含む請求項1に記載のコンピュータ実施方法。 3.リンク済みリストのデータ構造を修正する段階がリンク済みリストのデータ 構造に第2エレメントを追加する段階を含み、アトミック動作が、第1エレメン トのポインタ部分を修正して第2エレメントを指すようにする段階を含む請求項 1に記載のコンピュータ実施方法。 4.アトミック修正動作が、第1エレメントのポインタ部分を修正して第3エレ メントを指すようにする段階を含む請求項1に記載のコンピュータ実施方法。 5.リンク済みリストのデータ構造を修正する段階がリンク済みリストのデータ 構造から第2エレメントを除去する段階を含み、アトミック動作が、第1エレメ ントのポインタ部分を修正して、第2エレメントの代わりに第3エレメントを指 すようにする段階を含む請求項1に記載のコンピュータ実施方法。 6.修正および更新動作と同時に、リンク済みリストのデータ構造に対してマー ク/スイープ・ガーベージ・コレクション動作を実行する段階を含む請求項1に 記載のコンピュータ実施方法。 7.リンク済みリストのデータ構造を修正する段階が同期動作である請求項1に 記載のコンピュータ実施方法。 8.非同期トラバースが、リンク済みリストのデータ構造内のエレメントのデー タ部分を検索する検索動作を含む請求項1に記載のコンピュータ実施方法。 9.オブジェクト指向プログラミング環境におけるリンク済みリストのオブジェ クトにおいて データ部分およびポインタ部分をそれぞれ有する複数のエレメントを含むリン ク済みリストのデータ構造と、 第1エレメントの挿入または除去によってリンク済みリストのデータ構造を修 正する修正メソッドと、 第2エレメントのポインタ部分を更新して、アトミック修正動作を利用するリ ンク済みリストのデータ構造の修正を反映する更新メソッドと、 修正メソッドによるリンク済みリストのデータ構造の修正と同時に、リンク済 みリストのデータ構造の非同期トラバースを実行するトラバース・メソッドと を含むオブジェクト。 10.プロセッサによって実行されたときに、そのプロセッサに、 第2エレメントを挿入または除去することによって、データ部分およびポイン タ部分を有する第1エレメントを含むリンク済みリストのデータ構造を修正する 段階と、 アトミック動作を含み、リンク済みリストのデータ構造の修正を反映するよう に第1エレメントのポインタ部分を更新する段階と、 リンク済みリストのデータ構造の修正と同時にリンク済みリストのデータ構造 の非同期トラバースを実行する段階と を実行させる一連の命令を記憶したコンピュータ可読媒体。 11.リンク済みリストのデータ構造の修正と同時にリンク済みリストのデータ 構造の複数の非同期トラバースをプロセッサに実行させる一連の命令を記憶した 請求項10に記載のコンピュータ可読媒体。 12.プロセッサに第2エレメントをリンク済みリストのデータ構造中に追加さ せる一連の命令を記憶する請求項10に記載のコンピュータ可読媒体であって、 アトミック動作が第1エレメントのポインタ部分を修正して第2エレメントを指 すようにする段階を含むコンピュータ可読媒体。 13.アトミック動作が、第1エレメントのポインタ部分を修正して第3エレメ ントを指すようにする段階を含む請求項10に記載のコンピュータ可読媒体。 14.プロセッサに第2エレメントをリンク済みリストのデータ構造から除去さ せる一連の命令を記憶する請求項10に記載のコンピュータ可読媒体であって、 更新する段階が、第1エレメントのポインタ部分をアトミックに修正して、第1 エレメントの代わりに第3エレメントを指すようにする段階を含むコンピュータ 可読媒体。 15.修正および更新動作と同時に、リンク済みリストのデータ構造に対してマ ーク/スイープ・ガーベージ・コレクション動作を実行する段階を含む請求項1 0に記載のコンピュータ可読媒体。 16.リンク済みリストのデータ構造を修正する段階が同期動作である請求項1 0に記載のコンピュータ可読媒体。 17.データ部分およびポインタ部分を含むエレメントを含むリンク済みリスト のデータ構造を管理するための、 リンク済みリストのデータ構造に対して第1動作を実行する段階と、 第1動作と同時にリンク済みリストのデータ構造の非同期トラバースを実行す る段階とを含むコンピュータ実施方法であって、この非同期トラバースがエレメ ントのポインタ部分の読取りを実行する段階を含み、この読取りがアトミック動 作として実行される方法。 18.第1動作がさらにリンク済みリストのデータ構造の非同期トラバースであ る請求項17に記載のコンピュータ実施方法。 19.第1動作がさらにリンク済みリストのデータ構造の同期修正である請求項 17に記載のコンピュータ実施方法。 20.プロセッサによって実行されたときに、そのプロセッサに、 リンク済みリストのデータ構造に対して第1動作を実行する段階と、 第1動作と同時にリンク済みリストのデータ構造の非同期トラバースを実行す る段階と を実行させる一連の命令を記憶したコンピュータ可読媒体であって、 この非同期トラバースがエレメントのポインタ部分の読取りを実行する段階を含 み、この読取りがアトミッタ動作として実行されるコンピュータ可読媒体。 21.第1動作がリンク済みリストのデータ構造の非同期トラバースである請求 項20に記載のコンピュータ可読媒体。 22.第1動作がさらにリンク済みリストのデータ構造の同期修正である請求項 20に記載のコンピュータ可読媒体。 23.プロセッサによって実行されたときに、そのプロセッサに、 第2エレメントを挿入または除去することによって、データ部分およびポイン タ部分を有する第1エレメントを含むリンク済みリストのデータ構造を修正する 段階と、 アトミック動作を含み、リンク済みリストのデータ構造の修正を反映するよう に第1エレメントのポインタ部分を更新する段階と、 リンク済みリストのデータ構造の修正と同時にリンク済みリストのデータ構造 の非同期トラバースを実行する段階と を実行させる一連の命令を表す、搬送波に組み込まれたコンピュータ・データ信 号。 24.プロセッサによって実行されたときに、そのプロセッサに、 データ部分およびポインタ部分を含むエレメントを含むリンク済みリストのデ ータ構造に対して第1動作を実行する段階と、 第1動作と同時にリンク済みリストのデータ構造の非同期トラバースを実行す る段階と を実行させる一連の命令を表す、搬送波に組み込まれたコンピュータ・データ信 号であって、 この非同期トラバースがエレメントのポインタ部分の読取りを実行する段階を含 み、この読取りがアトミック動作として実行されるコンピュータ・データ信号。
JP50984299A 1997-06-30 1998-06-30 リンク済みリストのデータ構造を管理する方法および装置 Ceased JP2002501649A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/887,339 US5924098A (en) 1997-06-30 1997-06-30 Method and apparatus for managing a linked-list data structure
US08/887,339 1997-06-30
PCT/US1998/013652 WO1999000725A1 (en) 1997-06-30 1998-06-30 Method and apparatus for managing a linked-list data structure

Publications (1)

Publication Number Publication Date
JP2002501649A true JP2002501649A (ja) 2002-01-15

Family

ID=25390933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50984299A Ceased JP2002501649A (ja) 1997-06-30 1998-06-30 リンク済みリストのデータ構造を管理する方法および装置

Country Status (6)

Country Link
US (1) US5924098A (ja)
EP (1) EP0932863A4 (ja)
JP (1) JP2002501649A (ja)
KR (1) KR20000068342A (ja)
CN (1) CN1145881C (ja)
WO (1) WO1999000725A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027461A (ja) * 2003-01-28 2008-02-07 Microsoft Corp 集中キャッシュメモリのアトミックな更新方法
JP2009265898A (ja) * 2008-04-24 2009-11-12 Hitachi Ltd データ管理方法、データ管理プログラム、及び、データ管理装置
JP2012069072A (ja) * 2010-09-27 2012-04-05 Yahoo Japan Corp データベース装置
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
JP2018073406A (ja) * 2016-10-24 2018-05-10 ダトリウム インコーポレイテッド 記憶空間を解放するための分散データ並列方法

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134627A (en) * 1996-11-04 2000-10-17 Sun Microsystems, Inc. Thread synchronization in a computer controlled by an object-based program
AU731871B2 (en) * 1996-11-04 2001-04-05 Sun Microsystems, Inc. Method and apparatus for thread synchronization in object-based systems
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
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
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
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
WO2001035214A2 (en) * 1999-11-01 2001-05-17 Curl Corporation System and method supporting plural option data structures
WO2001033337A2 (en) * 1999-11-01 2001-05-10 Curl Corporation System and method supporting property values as options
AU1443701A (en) * 1999-11-01 2001-05-14 Curl Corporation System and method supporting type checking of options
AU1245501A (en) 1999-11-01 2001-05-14 Curl Corporation System and method supporting nonlocal values
AU1245701A (en) * 1999-11-01 2001-05-14 Curl Corporation System and method supporting mapping of option bindings
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
US6557168B1 (en) * 2000-02-25 2003-04-29 Sun Microsystems, Inc. System and method for minimizing inter-application interference among static synchronized methods
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
EP1292887A1 (en) * 2000-04-21 2003-03-19 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
US7064766B2 (en) 2001-10-18 2006-06-20 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
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7161599B2 (en) 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7443401B2 (en) 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
BR0213863A (pt) * 2001-11-01 2004-12-21 Verisign Inc Processo e sistema para atualizar um banco de dados remoto
DE10162046A1 (de) * 2001-12-17 2003-06-26 Thomson Brandt Gmbh Wiedergabegerät mit einem Zwischenspeicher zum Verringern der mittleren Zugriffszeit auf einen Informationsträger
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
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
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
US7486294B2 (en) 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7466315B2 (en) 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
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
US7451146B2 (en) * 2004-06-30 2008-11-11 Hewlett-Packard Development Company, L.P. Almost non-blocking linked stack implementation
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
US10002325B2 (en) * 2005-03-30 2018-06-19 Primal Fusion Inc. Knowledge representation systems and methods incorporating inference rules
WO2007037709A1 (en) * 2005-09-30 2007-04-05 Manabars Ip Limited An abstract platform to facilitate the interoperability of information
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
CN101093450B (zh) * 2006-06-19 2011-06-22 迈普通信技术股份有限公司 一种多cpu互斥的方法
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
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
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
CN105550339A (zh) * 2015-12-23 2016-05-04 智慧方舟科技有限公司 一种在线预览文档的方法、装置和系统
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
US11023374B2 (en) 2018-07-09 2021-06-01 Silicon Motion, Inc. Apparatus and method and computer program product for controlling data access
CN110765156A (zh) 2018-07-09 2020-02-07 慧荣科技股份有限公司 链表搜索装置及方法
TWI727185B (zh) * 2018-07-09 2021-05-11 慧榮科技股份有限公司 鏈結串列搜索裝置及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027461A (ja) * 2003-01-28 2008-02-07 Microsoft Corp 集中キャッシュメモリのアトミックな更新方法
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
JP2009265898A (ja) * 2008-04-24 2009-11-12 Hitachi Ltd データ管理方法、データ管理プログラム、及び、データ管理装置
JP4585579B2 (ja) * 2008-04-24 2010-11-24 株式会社日立製作所 データ管理方法、データ管理プログラム、及び、データ管理装置
JP2012069072A (ja) * 2010-09-27 2012-04-05 Yahoo Japan Corp データベース装置
JP2018073406A (ja) * 2016-10-24 2018-05-10 ダトリウム インコーポレイテッド 記憶空間を解放するための分散データ並列方法

Also Published As

Publication number Publication date
EP0932863A1 (en) 1999-08-04
EP0932863A4 (en) 2004-10-27
CN1236453A (zh) 1999-11-24
US5924098A (en) 1999-07-13
CN1145881C (zh) 2004-04-14
WO1999000725A1 (en) 1999-01-07
KR20000068342A (ko) 2000-11-25

Similar Documents

Publication Publication Date Title
JP2002501649A (ja) リンク済みリストのデータ構造を管理する方法および装置
US7895401B2 (en) Software transactional memory for dynamically sizable shared data structures
EP1910929B1 (en) Direct-update software transactional memory
Felber et al. Elastic transactions
Herlihy et al. Nonblocking memory management support for dynamic-sized data structures
US6581063B1 (en) Method and apparatus for maintaining a linked list
US7908441B2 (en) Value recycling facility for multithreaded computations
US5414840A (en) Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
US7703098B1 (en) Technique to allow a first transaction to wait on condition that affects its working set
US7533138B1 (en) Practical lock-free doubly-linked list
US8473950B2 (en) Parallel nested transactions
EP0352447A2 (en) Virtual lookaside means and method
Correia et al. Persistent memory and the rise of universal constructions
US7689788B2 (en) System and method for executing transactions
US7389291B1 (en) Implementing optimistic concurrent data structures
US5602998A (en) Dequeue instruction in a system architecture for improved message passing and process synchronization
US8095731B2 (en) Mutable object caching
Luchangco et al. On the uncontended complexity of consensus
Moreno et al. On the implementation of memory reclamation methods in a lock-free hash trie design
KR100470555B1 (ko) 컴퓨터 자원의 로크방법 및 장치
Petrank et al. A Practical Wait-Free Simulation for Lock-Free Data Structures
Fatourou Concurrency for the Masses: The Paradigm of Software Transactional Memory
Inohara et al. Page-based optimistic concurrency control for memory-mapped persistent object systems
Bhandakkar et al. GCList: Garbage Collection in Concurrent Sets
Mellor Towards Software Transactional Memory for Real-World Programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080313

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080804

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20081111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090106