JP4076276B2 - 選択的なオブジェクトロッキングによるスレッド同期 - Google Patents
選択的なオブジェクトロッキングによるスレッド同期 Download PDFInfo
- Publication number
- JP4076276B2 JP4076276B2 JP18406398A JP18406398A JP4076276B2 JP 4076276 B2 JP4076276 B2 JP 4076276B2 JP 18406398 A JP18406398 A JP 18406398A JP 18406398 A JP18406398 A JP 18406398A JP 4076276 B2 JP4076276 B2 JP 4076276B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- routine
- lock
- lock object
- locking
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、マルチスレッドコンピューティング環境に関し、より具体的には、選択的なオブジェクトロッキングによりスレッドを同期する方法及び装置に関する。
【0002】
【従来の技術】
マルチスレッドコンピューティング環境は、スレッドとして知られているプログラムの異なった部分を同時に実行することを可能にする。近年では、マルチスレッドコンピューティング環境は、マルチスレッドアプリケーションによって提供される好都合な動作特性のために、より普及するようになった。
【0003】
マルチプロセシング環境におけるプロセス実行を比較すると、セーブ及びリストアするランタイム状態がより少ないので、スレッドの実行は、とても迅速に開始されかつ終了される。スレッド間を迅速に切り替えることができる特性は、比較的高水準のデータ一致性を提供することができる。マルチスレッド環境においては、データの一致性は、多数のスレッドが同時に同一データにアクセスできる能力に相当する。マルチスレッド環境がマルチプロセッサシステムのときには、各スレッドが別々のプロセッサで実行され、多数のスレッドが共有データに同時にアクセスすることを可能にする。
【0004】
【発明が解決しようとする課題】
マルチスレッドコンピューティング環境によって好都合な動作特性が提供されるにもかかわらず、マルチスレッドコンピューティング環境には、欠点がないわけではない。具体的に言うと、マルチスレッドアプリケーションでは、複数のスレッドが同時に同一データにアクセスできるので、データ構造及び変数の完全な状態を維持することは、特に興味深いものである。マルチプロセシング環境におけるプロセスとは違って、スレッドは、一般に、単一のアドレス空間及び一組の広域変数を共有し、主として、プログラムカウンタ及びスタックポインタの値により識別される。従って、何らかの共通にアクセス可能なデータの状態は、他のスレッドによって読まれているのと同時に、1つのスレッドによる変化を受けるので、データを信頼できないものにする。
【0005】
多数のスレッドによる共通データへのアクセスを制御するために、あるシステムは、スレッドによる共通データへのアクセスを同期し、かつ、シリアライズする。マルチスレッド環境においては、スレッドを同期することは、共通データ構造へのアクセスを制御する機構を使用することに相当する。そのため、1つのスレッドだけが、一定の時間に共通データ構造にアクセスすることができる。一般に、共通データにアクセスする多数の要請は待ち行列に入り、オペレーティングシステム、マルチスレッドシステム、或いは、他の機構のどちらか一方により、一度に1つ処理される。
【0006】
スレッドを同期するために、あるプログラミング言語は、「モニタ」として知られているプログラミング言語構造を含んでいる。モニタは、抽象的なデータ形式内への、変数,手順及び他のデータ形式のカプセル化を提供する。モニタの変数,手順及び他のデータは、単一のアクセス手続によってのみアクセスされる。これは、他のアクセス要請がその順番になるまで待ち行列に入ったままで、1つのスレッドだけがいつでもモニタを積極的にアクセスすることを保証する。他のプログラミング言語は、スレッドによって実行されたときに、コードのブロックを効率的にロックする「同期された」ステートメントを支援して、同期されたステートメントを実行したスレッドだけが、コードのロックされたブロックを実行することができるようにする。共通データに影響を及ぼすコードは、その後、1つのスレッドだけがある一定の時間に共通データにアクセスできるように、コードの同期されたブロックに置かれる。
【0007】
オブジェクト指向環境では、スレッド同期は、オブジェクトロッキングによって時には成し遂げられる。一般に、オブジェクトロッキングは、オブジェクトに関連するロッキングデータを必要とするため、オブジェクトに関連する手順を呼び出したスレッドだけが、オブジェクトに関連するデータに変化を与える。オブジェクト指向言語の固有の再利用性のため、ソフトウエアデベロッパは、大規模な再利用可能なオブジェクトクラスライブラリを構築するのが普通である。ライブラリデベロッパは、常に、オブジェクトクラスライブラリがどのように使用されるか前もってわかるとは限らないので、オブジェクトロッキングは、一般に、ライブラリの全てのオブジェクトに対し実行される。
【0008】
オブジェクトロッキングは、複数のスレッドが同時にデータをアクセスしないようにするが、ある状況下では、オブジェクトロッキングは不要である。例えば、あるアプリケーションは、単一のスレッドのみを使用して、複数のスレッドが同時にオブジェクトデータにアクセスする心配を排除する。マルチスレッドアプリケーションですら、たびたび、データは、オペレーティングシステムにより、或いは、マルチスレッド環境によるより高水準で提供されるスレッド安全機構で保護される。かかる状況の両者では、オブジェクト呼出階層におけるオブジェクトはロックされる必要がない。従って、ロック関連オペレーションの自動実行の間に消費される時間及びシステムリソースは無駄になる。
【0009】
呼び出されたオブジェクトは、それ自体が他のオブジェクトを呼び出す他のオブジェクトを呼び出すので、高水準オブジェクトを呼び出すことにより、多数のオブジェクトをロックさせることとなる。呼出階層の深さには理論上の限界がない。従って、ロッキングオペレーションが不要なとき、組み込まれたロックオペレーションによって無駄にされる時間には限界がない。オブジェクトをロックすることは、かなりのシステムリソース及び時間を必要とする。例えば、あるシステムでは、オブジェクト上でロックを得ることは、最初のロックがロックテーブル上で得られ、そして、ロックテーブルエントリがロックを得るべきスレッドに関する情報に基づいて構成されることを必要とする。
【0010】
図1に図示されたオブジェクト呼出階層100を検討する。動的な呼出階層100は、オブジェクトA102,オブジェクトB104及びオブジェクトC106を含む。オブジェクトA102は、オブジェクトA102に関連する変数及びデータ構造等のデータ108を含む。オブジェクトA102はまた、データ108に作用する手順110を含む。同様に、オブジェクトB104は、オブジェクトB104に関連する変数及びデータ構造等のデータ112を含む。オブジェクトB104はまた、データ112に作用する手順114を含む。最後に、オブジェクトA102及びオブジェクトB104と同様に、オブジェクトC106は、オブジェクトC106に関連する変数及びデータ構造等のデータ116を含む。オブジェクトC106はまた、データ116に作用する手順118を含む。
【0011】
図1のオブジェクト呼出階層100により図示されるように、オブジェクトA102の手順110を呼び出すことにより、オブジェクトB104の手順114が呼び出され、次に、オブジェクトC106の手順118が呼び出される。
マルチスレッド環境では、複数のスレッド(図示せず)は、夫々、オブジェクトA102,B104,C106に関連する手順110,114,118を呼び出す。さらに、かかるスレッドが非同期であれば、データ108,112,116は、複数のスレッドにより更新され、データ108,112,116が信頼できないものとなる。
【0012】
一般的な同期アプローチによれば、手順100が呼び出されたとき、コード120の実行により、データ108に含まれるロックオブジェクトA122上でロックが得られる。ロックオブジェクトA122がロックされると、ロックオブジェクトA122を保持するスレッドだけが、データ108に変更をもたらす。特に、手順110はまた、データ108に含まれるデータA124にアクセスするコード123を含むので、ロックオブジェクトA122を保持するスレッドだけが、コード123を実行させ、かつ、データA124に変更をもたらす。
【0013】
また、手順110を呼び出すことにより、オブジェクトB104の手順114を呼び出すコード125が実行される。手順114を呼び出すことにより、コード128の実行によりロックオブジェクトB126上でロックが得られる。そして、コード130の実行により、オブジェクトC106の手順118が呼び出される。そして、コード134の実行により、ロックオブジェクトC132上でロックが得られる。
【0014】
手順118は、データ116のデータC136にアクセスするコード135を含む。手順118はまた、ロックオブジェクトC132上でロックを解放させるコード137を含む。制御はその後手順114へと戻り、ここで、コード138は、データ112のデータB139にアクセスする。そして、ロックオブジェクトB126上のロックは、コード140の実行によって解放され、制御は手順110へと戻る。最後に、コード142の実行により、ロックオブジェクトA122上のロックが解放される。
【0015】
組み込まれたロッキングコード120,142,128,140,134,137は、1つのスレッドだけが何らかの一定時間にデータ108,112,116にアクセスすることを保証するが、3つのロックオペレーション及び3つのアンロックオペレーションを必要とする。ある状態では、3つのロックオブジェクト122,126,132を全てロック及びアンロックすることは必要ない。例えば、単一のスレッドアプリケーションは、オブジェクトA102,B104,C106を呼び出し、これは、当然、単一のスレッドだけがデータ108,112,116を変更させることを意味する。しかしながら、オブジェクト呼出階層でオブジェクトに関連する手順を呼び出すことにより、自動的に、他の呼び出されたオブジェクト全てのためにロックが得られる。これは、特に、多くの水準を含む呼出階層にとっては、かなりのシステムリソースを使用することとなる。
【0016】
従って、シングルスレッド及びマルチスレッド環境で、オブジェクトに関連するデータを保護する必要性、及び、従来アプローチでの限界を考慮して、システムリソースに置かれた負荷を減らすマルチスレッド環境において、スレッドを同期するアプローチが大いに所望されている。
【0017】
【課題を解決するための手段】
本発明の一様相によれば、第1のルーチンに関連する第1のデータと、第2のルーチンに関連する第2のデータと、の両方を保護するための方法が提供される。第1のルーチンにより、ロックオブジェクトが第1のデータを保護するためにロックされる。そして、第2のルーチンにより、ロックオブジェクトが第1のデータを保護するためにロックされている間、同一のロックオブジェクトが第2のデータを保護するために再ロックされる。
【0019】
本発明の他の様相によれば、第1のルーチンに関連する第1のデータと、第2のルーチンに関連する第2のデータと、を保護するためのメモリを備えたコンピュータシステムが提供される。メモリは、第1のルーチン、第1のデータ、第2のルーチン、第2のデータ及びロックオブジェクトを含む。ロックオブジェクトは、第1のデータを保護するための第1のルーチンによってロックされ、また、第1のデータを保護するための第1のルーチンによってロックされている間、第2のデータを保護するための第2のルーチンによって再ロックされる。
【0021】
【発明の実施の形態】
本発明は、実施形態を通して説明されるが、添付図面の形態に限定されるものではない。図中、同様の要素には同様の参照符号が付される。
選択的なオブジェクトロッキングを使用してスレッドを同期する方法及び装置を説明する。以下の記述では、説明の便宜のために、本発明を完全に理解するための具体的な詳細が開示される。しかしながら、本発明は、かかる具体的な詳細なしに実行できることは明らかである。他の例では、本発明を不必要に不明瞭にすることを回避するため、公知の構造及び装置がブロック図で示される。
機能の概要
選択的なオブジェクトロッキングを使用したスレッドを同期する方法及び装置を説明する。選択的なオブジェクトロッキングは、オブジェクトを同期するために使用されるロックオブジェクトを選定するスレッドの能力に相当する。
【0022】
本発明の一実施形態によれば、呼出スレッドは、スレッドがオブジェクトを作成するコンストラクタ手順を呼び出すときに、ロックオブジェクトをオブジェクトに選定する。スレッドによって選定されるロックオブジェクトは、どんなオブジェクトであってもよい。同一のロックオブジェクトは、選定されたロックオブジェクトが再利用されるように、呼出スレッドによって呼び出されるオブジェクト呼出階層において、他のオブジェクトに選定されてもよい。オブジェクトに関連するデータを保護するために使用されるロックオブジェクトを特定する能力によって、スレッドによって呼び出される一連のオブジェクトが同一のロックオブジェクトを使用できる。
【0023】
再ロックオペレーションを行うのに必要なシステムリソース及び時間は、ロックオペレーションを行うのに必要なシステムリソース及び時間より少ないので、このアプローチは、オブジェクトロッキングに起因するシステムオーバヘッドをかなり減少する。
以下の記述において、用語「オブジェクトを呼び出すこと」とは、オブジェクトに関連する手順を呼び出すことをいう。また、用語「オブジェクトをロックすること」とは、オブジェクトに関連するデータへのアクセスを制限するために、ロックオブジェクト上でロックを得ることをいい、ここで、データを含むオブジェクトは、ロックオブジェクトと同一のオブジェクトであってもよく、また、同一のオブジェクトでなくともよい。本発明の実施形態は、オブジェクト呼出階層に関しては後述されるけれども、本発明は、特定のルーチンの形式或いは実施にかかわらず、どんなタイプのルーチン呼出階層にも適用され得る。
詳細な説明
本発明の一実施形態による選択的なオブジェクトロッキングを使用したスレッドを同期する方法及び装置は、(1) ボトムアップアプローチ、(2) トップダウンアプローチ、(3) 任意のロッキングアプローチを含む3つのアプローチに関して、後述される。
1.ボトムアップアプローチ
一般に、ボトムアップアプローチによれば、オブジェクト呼出階層の下位のオブジェクトに関連するロックオブジェクトは、ロックオブジェクトとして呼出スレッドによって選定される。このアプローチは、下位レベルのオブジェクトが先ず作成され、下位レベルのオブジェクトの同一性が1つ以上のより上位レベルのオブジェクトに提供されて、かかる上位レベルのオブジェクトが、呼び出したオブジェクトのためのロックオブジェクトとして下位レベルのオブジェクトを後で特定することができるので、ボトムアップアプローチと呼ばれる。ロックオブジェクトを選定した後で、呼出スレッドは、呼出スレッドによって呼び出される任意の他のオブジェクトのコンストラクタ手順に対して選定されたロックオブジェクトの同一性を提供する。かかるオブジェクトに関する各同期手順は、その後、それ自体のロックオブジェクトの代わりに、選定されたロックオブジェクト上でロックを得る。本質的に、一定のスレッドに関連するオブジェクト呼出階層でオブジェクトのいくつかは、構築されたときに特定された選定されたロックオブジェクト上でロックを得る。最初のロックの後に、選定されたロックオブジェクト上で得られた全てのロックは、再ロックオペレーションである。再ロックオペレーションは、ロックオペレーションより少ないシステムリソースを必要としかつ速い。
【0024】
ボトムアップアプローチは、デベロッパが多くの階層で組み立てられるオブジェクトクラス及びデータ構造のライブラリを構築している状態で、特に有用である。即ち、多くの設計者は、簡単なオブジェクトクラスから開始して、上位レベルのオブジェクトクラスを構築し、その手順は、より基本的なオブジェクトクラスの手順を呼び出すものである。設計者は、全オブジェクトクラスのうち最上位或いは最外側の層が何であるかがいつもわかるわけではないので、設計者は、ボトムアップアプローチに従って、選定されたロックオブジェクトとして呼出階層で下位オブジェクトに関連するロックオブジェクトを選択する。呼出連鎖における下位オブジェクトに関連するロックオブジェクトは、通常ロックオブジェクトとして選定されるが、オブジェクト呼出階層における任意のオブジェクトに関連するロックオブジェクトが、ロックオブジェクトとして選定されてもよい。
【0025】
本発明の一実施形態による明白なオブジェクトロッキングを提供するボトムアップアプローチは、図2を参照して以下に述べられる。オブジェクト呼出階層200は、図1の動的呼出階層100と同様であり、オブジェクトA202,オブジェクトB204及びオブジェクトC206を含んでいる。オブジェクトA202は、オブジェクトA202に関連する変数及びデータ構造等のデータ208を含む。データ208は、オブジェクトA202に関連するロックオブジェクトA209を含む。オブジェクトA202はまた、データ208に作用する手順210を含む。
【0026】
オブジェクトB204は、オブジェクトB204に関連する変数及びデータ構造等のデータ212を含む。データ212は、オブジェクトB204に関連するロックオブジェクトB213を含む。オブジェクトB204はまた、データ212に作用する手順214を含む。
オブジェクトC206は、オブジェクトC206に関連する変数及びデータ構造等のデータ216を含む。データ216は、オブジェクトC206に関連するロックオブジェクトC217を含む。オブジェクトC206はまた、データ216に作用する手順218を含む。
【0027】
オブジェクト呼出階層200におけるオブジェクト202,204,206の間でなされる呼出は、階層関係を定義する。階層関係は、オブジェクトA202を、オブジェクトB204及びオブジェクトC206の両方に対して「上位」レベルオブジェクトとし、一方、オブジェクトC206は、オブジェクトA202及びオブジェクトB204の両方に対して「下位」レベルオブジェクトとなる。これに対して、オブジェクトB204は、オブジェクトA202に対して「下位」レベルオブジェクトとなるが、オブジェクトC206に対しては「上位」レベルオブジェクトとなる。これは、オブジェクトA202を呼び出すことによりオブジェクトB204が呼び出され、このことは、以下により詳細に説明するように、順次、オブジェクトC206もまた呼び出せることになるためである。
【0028】
本発明の一実施形態によれば、オブジェクトA202,オブジェクトB204及びオブジェクトC206に関連するロックオブジェクトA209,B213,C217の1つは、夫々、オブジェクトA202,B204及びC206のためのロックオブジェクトに選定される。オブジェクト呼出階層200における各オブジェクトA202,B204,C206は、オブジェクトが構築されたときに選定されたロックオブジェクトの同一性へのアクセスを提供されると共に、オブジェクトに関連する同期手順が呼び出されたとき、選定されたロックオブジェクト上でロックを得る。オブジェクト呼出階層200における他のオブジェクトが呼び出されると、かかるオブジェクトはまた、選定されたロックオブジェクト上でロックを得る。選定されたロックオブジェクトがオブジェクトによってロックされると、選定されたロックオブジェクト上の全ての連続するロックは、再ロックオペレーションであり、これは、最初のロックオペレーションより処理のためのオーバヘッドの要求がかなり少なくなる。
【0029】
ボトムアップアプローチによる明白なオブジェクトロッキングを提供する際に必要とされる具体的なステップは、図2のブロック図、及び、図3のフローチャートを参照して次に述べられる。
ステップ300で開始した後、ステップ302において、スレッドは、1つ以上のオブジェクトの構築の間、オブジェクトをロックオブジェクトに選定する。前述したように、ロックオブジェクトに選定されたオブジェクトは、一般的に、オブジェクト呼出階層におけるより下位レベルでオブジェクトに関連付けられる。本実施形態では、スレッドは、ロックオブジェクトとしてのオブジェクトC206に関連するロックオブジェクトC217を選定する。ある状態では、オブジェクト呼出階層は、オブジェクト呼出階層において全てが同一の関連レベルとなるいくつかのオブジェクトを含んでもよい。この場合には、ロックオブジェクトの選定は、設計の選択事項となる。
【0030】
ステップ304では、スレッドは、オブジェクトA202に関連する手順210を呼び出す。その後ステップ306では、コード222の実行により、オブジェクトA202に選定されるロックオブジェクト上でロックが得られる。オブジェクトA202は、オブジェクトC206に関連するロックオブジェクトC217であり、効果的にオブジェクトC206をロックする。ロックオブジェクトC217がロックされると、手順210を呼び出したスレッドは、データ208に変更をもたらす独占的な権利を有する。手順210は、コード222より前に他のコードを含むので、他のスレッドは、手順210を呼び出すことが可能となる。しかしながら、ロックオブジェクトC217上でロックが解除されるまで、他のスレッドは、コード222を実行することができない。手順210はまた、データA224にアクセスするが、ロックオブジェクトC217上でロックが解除されるまで、他のスレッドによって実行されることができないコード223を含む。
【0031】
ステップ308では、コード225の実行により、オブジェクトB204の手順214が呼び出される。本実施形態では、コード225は、ロックオブジェクトC217がオブジェクトB204によって使用されるロックオブジェクトであることを特定する呼出包含情報を含む。
ステップ310では、オブジェクトA202によってロックオブジェクトC217上でロックが前もって取得されているので、コード226は、ロックオブジェクトC217を再ロックさせる。前述したように、ロックオペレーションのために必要とされる多くの情報が再ロックオペレーション中に再利用されるので、再ロックオペレーションは、ロックオペレーションよりもシステムリソース及び時間が少なくてすむ。
【0032】
ステップ312では、コード228の実行により、オブジェクトC206の手順218が呼び出される。コード228は、オブジェクトC206によって使用されるロックオブジェクトとしてのロックオブジェクトC217を特定する呼出包含情報を含む。
ステップ314では、コード230の実行により、ロックオブジェクトC217が再ロックされる。手順218はまた、データC232にアクセスするコード231を含む。
【0033】
ステップ316では、コード233の実行により、オブジェクトC206によって保持されるロックオブジェクトC217上で1つのロックが解除され、制御を手順214に戻す。手順214はまた、データB235にアクセスするコード234を含む。データB235は、ロックオブジェクトC217上でロックが解除されるまで、他のスレッドによって実行されることができない。
【0034】
ステップ318では、コード236の実行により、オブジェクトB204によって保持されるロックオブジェクトC217上で1つのロックが解除され、制御を手順210に戻す。最後に、ステップ320では、コード238の実行により、オブジェクトA202によって保持されるロックオブジェクトC217上でロックが解除される。
【0035】
このアプローチによって説明されるように、スレッドがオブジェクト呼出階層200において手順210,214,218のいずれかを呼び出すと、ロックオブジェクトC217がロックされる。これにより、他のスレッドが呼び出されたオブジェクトに関連するデータに変更をもたらすことを防止する。さらに、ロックオブジェクトC217がオブジェクトA202,B204,C206によって使用されるロックオブジェクトに選定されているので、ロックオブジェクトC217が再利用される。これにより、再ロックオペレーションがロックオペレーションの代わりに利用されるので、システムリソースを節約し、かつ、性能を改善する。
【0036】
本発明の実施形態による選択的なオブジェクトロッキングを使用したスレッドを同期するボトムアップアプローチのコード実施の一例は、下記に説明される。コード例は、サンマイクロシステムズインコーポレーテッド(Sun Microsystems Inc. )によるJava(商標)プログラミング言語に似ているが、かかる例は、単に目的を説明するのためのものにすぎず、実際のコード実行を表示することを意味するものではない。
先の説明では、オブジェクト呼出階層におけるオブジェクトは、ロックオブジェクトに選定されたが、オブジェクト呼出階層の外部のオブジェクトが、本発明の範囲から逸脱することなくロックオブジェクトに選定されてもよい。
【0037】
前記例において、オブジェクトA202及びオブジェクトB204は、呼び出したオブジェクトに対し、それらのために特定されたロックオブジェクトを特定するために形成される。しかしながら、オブジェクトは、呼び出したロックオブジェクトに対し、それらのために特定されたロックオブジェクトを特定する必要はない。例えば、オブジェクトA202がオブジェクトB204によって使用されるロックオブジェクトとしてロックオブジェクトC217を特定していても、オブジェクトD(図示せず)が、オブジェクトA202によって使用されるロックオブジェクトとして特定されてもよい。
2.トップダウンアプローチ
ボトムアップアプローチと同様に、トップダウンアプローチは、一般に、一度だけロックされ、その後オブジェクト呼出階層における他の呼び出されたオブジェクトによって再ロックされるロックオブジェクトを選定することを意味する。
【0038】
トップダウンアプローチによれば、呼出スレッドは、上位階層オブジェクトをロックオブジェクトに選定する。例えば、図2を再び参照すると、呼出スレッド(図示せず)は、それ自体のロックオブジェクトをロックオブジェクトに選定し、、選定されたロックオブジェクトの同一性をオブジェクトA202に渡す。手順210が呼び出されると、選定されたロックオブジェクトの同一性は、その後、かかるオブジェクトの同期された実行の間、オブジェクト呼出階層200において全てのオブジェクトA202,B204,C206によって使用される。しかしながら、トップダウンアプローチによれば、呼出階層に明確に関連しない他のオブジェクトが、ロックオブジェクトとして選択されてもよい。
【0039】
トップダウンアプローチは、デベロッパがオブジェクトレベルの同期を既に実行したオブジェクトクラスライブラリに関連する手順を呼び出すプログラムを構築する場合において、特に都合のよいものである。
3.任意のロッキングアプローチ
1つのスレッドだけがオブジェクトを呼び出している状態では、シングルスレッドアプリケーションのような、スレッド同期は必要ない。しかしながら、オブジェクトロッキングは、シングルスレッドアプリケーションによって使用されるオブジェクトライブラリに組み込まれてもよい。この状態では、オブジェクトロッキングは必要でなく、貴重なシステムリソースを無駄にする。
【0040】
オブジェクトクラスライブラリのデベロッパは、ライブラリが開発されたときに、ライブラリがシングルスレッドアプリケーションによってのみ使用されるか否か、或いは、何らかの他の理由によりオブジェクトロッキングが必要ないことを常にわかるわけではないので、スレッド同期は、一般に、ライブラリに組み込まれる。オブジェクトロッキングの有無にかかわらず複製のライブラリを提供する代わりの実施は、アプリケーションデベロッパがマルチスレッドアプリケーションによる非同期ライブラリを不注意に使用する危険性があり、それゆえに、一般に回避される。従って、標準の実施は、オブジェクトロッキングを伴った同期されたオブジェクトクラスライブラリを提供することである。
【0041】
任意のロッキングアプローチによれば、オブジェクトロッキングが使用されるか否かを特定する能力が提供される。スレッド同期が必要でない状態でオブジェクトロッキングを回避することは、オブジェクトをロックすることに通常起因するシステムリソースの使用を排除し、ロックを得るのに必要とされる時間を節約する。さらに、ロックオブジェクトがオブジェクトに動的に割り当てられた状態では、ロックオブジェクトのために通常必要とされる領域が節約される。単一のオブジェクトのために節約される領域は、数バイトのデータにすぎないが、システムリソース及び時間を節約することは、数千の、或いは、ことによると数百万のオブジェクトを使用するアプリケーションにとっては、かなりのものとなる。
【0042】
任意のロッキングアプローチによれば、オブジェクトロッキングパラメータは、各オブジェクトコンストラクタ呼出に含まれる。オブジェクトロッキングパラメータは、オブジェクトロッキングがオブジェクトによって使用されるか否かを特定し、もしそうであれば、そのオブジェクトはロックされる。つまり、パラメータは、(1) ロックオブジェクトを特定するか、或いは、(2) オブジェクトロッキングが行われないことを示す所定値を特定するか、のいずれかを行う。
【0043】
ロックオブジェクトが特定されたとき、オブジェクトの同期手順は、特定されたロックオブジェクト上でロックを得る。これに対して、オブジェクトロッキングが行われないことを示す所定値が特定されたとき、呼び出された手順は、いかなるオブジェクトロッキングも実行しない。本発明の一実施形態によれば、オブジェクトロッキングがないことを特定する所定値として、NULL値が使用される。しかしながら、他の所定値が、本発明の範囲から逸脱せずに使用されてもよい。
【0044】
例えば、図2を再び参照すると、手順210がオブジェクトA202のためのコンストラクタであると仮定する。呼出スレッドは、オブジェクトA202に関連する手順210を呼び出すと共に、手順210を呼び出す呼出におけるオブジェクトロッキングパラメータを含む。オブジェクトロッキングパラメータは、コード222によって評価され、その値に応じて適切な処理が取られる。
【0045】
最初の場合には、ロックオブジェクトパラメータは、手順210によって使用されるロックオブジェクトを特定する。この場合、コード222により、ロックオブジェクトパラメータによって特定されるロックオブジェクト上で、ロックが得られる。前述したボトムアップアプローチによれば、ロックオブジェクトパラメータは、オブジェクトC206に関連するロックオブジェクトC217を特定する。これに対して、トップダウンアプローチによれば、ロックオブジェクトパラメータは、呼出メソッドに関連するロックオブジェクトを特定する。
【0046】
ロックオブジェクトを特定する代わりに、オブジェクトロッキングが行われないようにするため、オブジェクトロックパラメータは、NULL値のような所定値を特定してもよい。
任意のロッキングアプローチは、オブジェクト毎に基づいて使用されるロッキングのタイプを選択的に特定するプログラムに柔軟性を提供する。プログラムは、あるオブジェクトに対するロッキング、及び、他のオブジェクトに対するロッキングなしを特定してもよい。例えば、アプリケーションデベロッパは、オブジェクトが1つのスレッドのみによって使用される特定のマルチスレッドアプリケーションを知っていてもよい。任意のロックキングアプローチを使用して、アプリケーションデベロッパは、他のオブジェクトが全くロックされないのに対し、あるオブジェクトがオブジェクトロッキングにより保護されることを特定してもよい。もちろん、あるオブジェクトに対してオブジェクトロッキングを特定し、他のオブジェクトに対してオブジェクトロッキングを特定しないことは、危険な状態で保護されていないオブジェクトに関連するデータを配置するので、スレッドが設計通りに実行しない危険性、或いは、付加的なスレッドが後に付加される危険性がある。
【0047】
任意のロッキングアプローチは、図2のブロック図及び図4のフローチャートを参照して以下述べられる。ステップ400で開始した後、ステップ402では、呼出手順は、オブジェクトA202に関連する手順210を呼び出す。実施は、ロックオブジェクトパラメータを含む。ロックオブジェクトパラメータは、オブジェクトロッキングがオブジェクトA202によって行われたか否かを特定し、もしそうであれば、オブジェクトロックが使用される。
【0048】
ステップ404では、コード202は、呼出手順によって提供されたロックオブジェクトパラメータを評価する。ステップ406では、コード222によって、ロックオブジェクトパラメータがロックオブジェクトを特定するか否かの決定がなされる。もしそうであれば、その後ステップ408において、コード222により、ロックオブジェクトパラメータによって特定されたロックオブジェクト上でロックが得られる。ロックオブジェクトパラメータによって特定されたロックオブジェクトは、ロックオブジェクトとして使用されるどんなオブジェクトであってもよい。
【0049】
これに対して、ステップ406において、ロックオブジェクトパラメータがロックオブジェクトを特定していなければ、オブジェクトロッキングが行われず、処理がステップ410で終了する。本発明の一実施形態によれば、オブジェクトロッキングが行われないことを示すのに、NULL値が使用される。しかしながら、本発明の範囲から逸脱することなく、他の所定値もまた使用されてもよい。
【0050】
本発明の一実施形態による任意のロッキングアプローチのコード実行の一例は、次のように示される。例は、単に目的を説明するものにすぎず、完全なコード実行を表わすことを意味するものではない。
任意のロッキングアプローチによれば、このコード例は、オブジェクトロックパラメータが呼び出されたオブジェクトに渡され、その後、オブジェクトロッキングが行われるか否かを決定するオブジェクトに関連する手順によって調べられることを示す。
【0051】
本発明の実施形態は、オブジェクトの作成(構築)の間、ロックオブジェクトを選定するという面において説明されるが、ロックオブジェクトの選定は、後の時間まで延期されてもよい。例えば、ロックオブジェクトの選定は、オブジェクトが呼び出されたときになされ、オブジェクトの内部或いは外部で決定されてもよい。ロックオブジェクトは、その後、オブジェクト自身により処理され、或いは、オブジェクトの外部で処理される。
ハードウエアの概要
図5は、本発明の一実施形態が実行されるコンピュータシステム500を示すブロック図である。コンピュータシステム500は、バス502或いは通信情報のための他の通信機構、及び、情報を処理するためのバス502に接続されたプロセッサ504を含む。コンピュータシステム500はまた、ランダムアクセスメモリ(RAM)或いは他の動的な記憶装置等のプロセッサ504によって実行される情報及び命令を記憶するためのバス502に接続されるメインメモリ506を含む。メインメモリ506はまた、プロセッサ504による命令実行の間、一時的変数或いは他の中間情報を記憶するために使用されてもよい。コンピュータシステム500はまた、プロセッサ504のための静的な情報及び命令を記憶するための、バス502に接続されたリードオンリーメモリ(ROM)508或いは他の静的な記憶装置を含む。磁気ディスク或いは光ディスク等の記憶装置510はまた、情報及び命令を記憶するために提供されかつバス502に接続される。
【0052】
コンピュータシステム500はまた、コンピュータユーザに情報を表示するための、バス502を介してカソードレイチューブ(CRT)等のディスプレイ512に接続される。英数字及び他のキーを含む入力装置514はまたプロセッサ504に対して情報及びコマンド選択を伝達するために、提供されかつバス502に接続される。ユーザ入力装置の他の形式は、プロセッサ504に方向情報及びコマンド選択を伝達すると共に、ディスプレイ512上のカーソルの動きを制御するマウス,トラックボール或いはカーソル移動キー等のカーソルコントロール516である。この入力装置は、一般に、装置が面における位置を特定することを可能にする第1の軸(例えば、x)及び第2の軸(例えば、y)の2軸において2つの自由度を有している。
【0053】
本発明は、選択的なオブジェクトロッキングによるスレッドを同期するコンピュータシステム500の使用に関する。本発明の一実施形態によれば、選択的なオブジェクトロッキングによるスレッド同期は、メインメモリ506に含まれる一連の命令を実行するプロセッサ504に応じて、コンピュータシステム500によって提供される。このような命令は、記憶装置510のような他のコンピュータ読み取り可能な媒体から、メインメモリ506に読み込まれる。しかしながら、コンピュータ読み取り可能な媒体は、記憶装置510のような装置に限定されない。例えば、コンピュータ読み取り可能な媒体は、フロッピーディスク,フレキシブルディスク,ハードディスク,磁気テープ或いは他の磁気媒体,CD−ROM,他の光媒体,RAM,PROM,EPROM,FLASH−EPROM,他のメモリチップ或いはカートリッジ,コンピュータが読み込める他の媒体を含む。メインメモリ506に含まれる一連の命令の実行により、プロセッサ504が前述した処理ステップを実行する。他の実施形態では、ハードウエア(hard-wired)電気回路が、本発明を実行するために、ソフトウエア命令の代わりに、或いは、ソフトウエア命令と協働して使用されてもよい。このように、本発明の実施形態は、ハードウエア電気回路とソフトウエアの特定の組合わせに限定されるものではない。
【0054】
コンピュータ500はまた、バス502に接続された通信インタフェース518を含む。通信インタフェース508は、ローカルネットワーク522へのネットワークリンク520に接続する双方向データ通信を提供する。例えば、通信インタフェース518がサービス統合デジタルネットワーク(ISDN)カード或いはモデムであれば、通信インタフェース518は、電話回線の通信形式へのデータ通信接続を提供する。もし通信インタフェース518がローカルエリアネットワーク(LAN)カードであれば、通信インタフェース518は、互換LANへのデータ通信接続を提供する。無線リンクもまた可能である。このような実装のいずれにおいても、通信インターフェース518は、種々の情報形式を表わすデジタルデータストリームを保持する電気信号,電磁信号或いは光信号を送信しかつ受信する。
【0055】
ネットワークリンク520は、一般に、1つ以上のネットワークを介して他のデータ装置にデータ通信を提供する。例えば、ネットワークリンク520は、ローカルネットワーク522を介して、ホストコンピュータ524或いはインターネットサービスプロバイダ(ISP)526によって操作されるデータ機器への接続を提供する。ISP526は、一般に今日では「インターネット」528と呼ばれるワールドワイドパケットデータ通信ネットワークを介して、データ通信サービスを次々と提供する。ローカルネットワーク522及びインターネット528の両者は、デジタルデータストリームを保持する電気信号,電磁信号或いは光信号を使用する。種々のネットワークを介した信号、及び、ネットワークリンク520上及び通信インタフェース518を介した信号は、コンピュータ500に入出力されるデジタルデータを保持し、情報を搬送する搬送波の形状を示す。
【0056】
コンピュータ500は、メッセージを送信し、ネットワーク,ネットワークリンク520及び通信インタフェース518を介して、プログラムコードを含んだデータを受信する。インターネットの例では、サーバ530が、インターネット528,ISP526,ローカルネットワーク522及び通信インタフェース518を介してアプリケーションプログラムに要求コードを送信する。本発明によれば、このようなダウンロードされたアプリケーションは、ここで述べたように、選択的なオブジェクトロッキングを使用するスレッド同期に対応する。
【0057】
受信コードは、受信されると、プロセッサ504によって実行され、及び/或いは、後の実行のために、記憶装置510或いは他の不揮発性記憶装置に記憶される。このように、コンピュータ500は、搬送波形状でアプリケーションコードを得る。
上記記載において、本発明は、特定の実施形態に関して説明された。しかしながら、種々の変更及び変化が本発明のより広範囲の精神及び範囲から逸脱することなく、なされることは明らかである。それゆえに、明細書及び図面は、制限的な意味よりもむしろ実例となるものであるとみなされる。
【0058】
【発明の効果】
本発明は、複数のスレッドによって共通にアクセス可能なデータが同時にアクセスされないように、スレッドを同期する従来のアプローチを越えたいくつかの有利な点を提供する。特に、本発明は、スレッドによって呼び出されるオブジェクト呼出階層で、1つ以上のオブジェクトによって使用されるロックオブジェクトを選定する呼出スレッドのための能力を提供する。この能力の重要な利点は、一旦最初のロックが得られると、再ロックオペレーションを実行するために、必要なシステムリソースがかなり少なくてすむことである。また、ロックオブジェクトをロックするよりもロックオブジェクトを再ロックする方が、より時間が少ない。さらに、シングルスレッドアプリケーション、或いは、オブジェクトロッキングが必要でない他の状態では、本発明は、オブジェクト毎に基づくオブジェクトロッキングを無視する柔軟性を提供する。処理の見地からシステムリソースを節約することに加えて、あるシステムでは、これは呼び出された各オブジェクトに対して、ロックオブジェクトの割り当てを回避する。
【図面の簡単な説明】
【図1】 従来技術のオブジェクト呼出階層を示すブロック図
【図2】 本発明の一実施形態によるオブジェクト呼出階層を示すブロック図
【図3】 本発明の一実施形態によるマルチスレッド環境におけるオブジェクトに関連するデータを保護する手順を示すフローチャート
【図4】 本発明の他の実施形態によるマルチスレッド環境におけるオブジェクトに関連するデータを保護する手順を示すフローチャート
【図5】 本発明が実行されるコンピュータシステムのブロック図
Claims (15)
- 第1のルーチンから第2のルーチンが呼び出される呼出階層において、前記第1のルーチン及び第2のルーチンに関連する第1のデータと、前記第2のルーチンに関連する第2のデータと、の両方を保護する方法であって、
前記第1のルーチンは、前記第1のデータを保護するために第1のデータに関連するロックオブジェクトをロックする工程と、
前記第2のルーチンは、前記第2のデータを保護するために第2のデータに関連するロックオブジェクトを再ロックする工程と、
を含んで構成されることを特徴とする方法。 - 前記第1のルーチンに関連するオブジェクトを前記第1のデータに関連するロックオブジェクトに選定する工程をさらに含む構成である請求項1記載の方法。
- 前記第2のルーチンに関連するオブジェクトを前記第2のデータに関連するロックオブジェクトに選定する工程をさらに含む構成である請求項1記載の方法。
- 第3のルーチンがロックオブジェクトパラメータを前記第2のルーチンに提供する工程と、
前記ロックオブジェクトパラメータがロックオブジェクトを特定する場合に、前記第2のルーチンが前記ロックオブジェクトパラメータにより特定された前記ロックオブジェクトをロックする工程と、
前記ロックオブジェクトパラメータがオブジェクロッキングが実行されないことを特定する場合に、前記第2のルーチンがロックオブジェクトをロックしない工程と、
をさらに含む構成である請求項1記載の方法。 - 前記第1のルーチンは、第1のオブジェクトに関連する第1の手順であり、
前記第2のルーチンは、第2のオブジェクトに関連する第2の手順であり、
前記第1のルーチンが前記第1のデータに関連するロックオブジェクトをロックする工程は、前記第1の手順が前記第1のデータを保護するために第1のデータに関連するロックオブジェクトをロックする工程をさらに含み、
前記第2のルーチンが前記第2のデータに関連するロックオブジェクトを再ロックする工程は、前記第2の手順が前記第2のデータを保護するために第2のデータに関連するロックオブジェクトを再ロックする工程をさらに含む
構成である請求項1記載の方法。 - 前記第1の手順に関連するオブジェクトを前記第1のデータに関連するロックオブジェクトに選定する工程をさらに含む構成である請求項5記載の方法。
- 前記第2の手順に関連するオブジェクトを前記第2のデータに関連するロックオブジェクトに選定する工程をさらに含む構成である請求項5記載の方法。
- 第1のルーチンから第2のルーチンが呼び出される呼出階層において、前記第1のルーチン及び第2のルーチンに関連する第1のデータと、前記第2のルーチンに関連する第2のデータと、を保護するメモリを備えたコンピュータシステムであって、
前記メモリは、
前記第1のルーチンと、
前記第1のデータと、
前記第2のルーチンと、
前記第2のデータと、
前記第1のデータを保護するために前記第1のルーチンによりロックされる第1のデータに関連するロックオブジェクトと、
前記第1のデータを保護するために第1のデータに関連するロックオブジェクトがロックされる間、前記第2のデータを保護するために前記第2のルーチンにより再ロックされる第2のデータに関連するロックオブジェクトと、
を含んで構成されることを特徴とするコンピュータシステム。 - 第1のルーチンから第2のルーチンが呼び出される呼出階層において、前記第1のルーチン及び第2のルーチンに関連する第1のデータと、前記第2のルーチンに関連する第2のデータと、の両方を保護する複数の一連の命令を記憶したコンピュータ読み取り可能な媒体であって、
一連の命令を含む前記複数の一連の命令は、コンピュータに、
前記第1のデータを保護するために前記第1のルーチンが第1のデータに関連するロックオブジェクトをロックする工程と、
前記第2のデータを保護するために前記第2のルーチンが第2のデータに関連するロックオブジェクトを再ロックする工程と、
を実行させる構成であることを特徴とするコンピュータ読み取り可能な媒体。 - 前記コンピュータ読み取り可能な媒体は、前記コンピュータに、前記第1のルーチンに関連するオブジェクトを前記第1のデータに関連するロックオブジェクトに選定する工程を実行させる命令をさらに含む構成である請求項9記載のコンピュータ読み取り可能な媒体。
- 前記コンピュータ読み取り可能な媒体は、前記コンピュータに、前記第2のルーチンに関連するオブジェクトを前記第2のデータに関連するロックオブジェクトに選定する工程を実行させる命令をさらに含む構成である請求項9記載のコンピュータ読み取り可能な媒体。
- 前記コンピュータ読み取り可能な媒体は、
前記コンピュータに、
第3のルーチンがロックオブジェクトパラメータを前記第2のルーチンに提供する工程を実行させる命令と、
前記ロックオブジェクトパラメータがロックオブジェクトを特定する場合に、前記第2のルーチンが前記ロックオブジェクトパラメータにより特定された前記ロックオブジェクトをロックする工程を実行させる命令と、
前記ロックオブジェクトパラメータがオブジェクトロッキングが実行されないことを特定する場合に、前記第2のルーチンがロックオブジェクトをロックしない工程を実行させる命令と、
をさらに含んだ構成である請求項9記載のコンピュータ読み取り可能な媒体。 - 前記第1のルーチンは、第1のオブジェクトに関連する第1の手順であり、
前記第2のルーチンは、第2のオブジェクトに関連する第2の手順であり、
前記第1のルーチンが第1のデータに関連するロックオブジェクトをロックする工程は、前記第1の手順が前記第1のデータを保護するために第1のデータに関連するロックオブジェクトをロックする工程をさらに含み、
前記第2のルーチンが第2のデータに関連するロックオブジェクトを再ロックする工程は、前記第2の手順が前記第2のデータを保護するために第2のデータに関連するロックオブジェクトを再ロックする工程をさらに含む
構成である請求項9記載のコンピュータ読み取り可能な媒体。 - 前記コンピュータ読み取り可能な媒体は、前記コンピュータに、前記第1の手順に関連するオブジェクトを前記第1のデータに関連するロックオブジェクトに選定する工程を実行させる命令をさらに含む構成である請求項13記載のコンピュータ読み取り可能な媒体。
- 前記コンピュータ読み取り可能な媒体は、前記コンピュータに、前記第2の手順に関連するオブジェクトを前記第2のデータに関連するロックオブジェクトに選定する工程を実行させる命令をさらに含む構成である請求項13記載のコンピュータ読み取り可能な媒体。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/885566 | 1997-06-30 | ||
| US08/885,566 US6430638B1 (en) | 1997-06-30 | 1997-06-30 | Thread synchronization via selective object locking |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH1185545A JPH1185545A (ja) | 1999-03-30 |
| JP4076276B2 true JP4076276B2 (ja) | 2008-04-16 |
Family
ID=25387204
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP18406398A Expired - Lifetime JP4076276B2 (ja) | 1997-06-30 | 1998-06-30 | 選択的なオブジェクトロッキングによるスレッド同期 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US6430638B1 (ja) |
| EP (1) | EP0889396B1 (ja) |
| JP (1) | JP4076276B2 (ja) |
| DE (1) | DE69838366T2 (ja) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6826752B1 (en) * | 1998-12-17 | 2004-11-30 | California Institute Of Technology | Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs |
| US6836887B1 (en) * | 1998-12-21 | 2004-12-28 | Microsoft Corporation | Recyclable locking for multi-threaded computing environments |
| US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
| US6735760B1 (en) | 2000-11-08 | 2004-05-11 | Sun Microsystems, Inc. | Relaxed lock protocol |
| KR100439186B1 (ko) * | 2001-12-28 | 2004-07-05 | 한국전자통신연구원 | 자바 가상머신의 멀티 쓰레드 시스템에서의 동기화 장치및 방법 |
| US7231554B2 (en) * | 2002-03-25 | 2007-06-12 | Availigent, Inc. | Transparent consistent active replication of multithreaded application programs |
| US7444634B2 (en) * | 2002-10-31 | 2008-10-28 | Sun Microsystems, Inc. | Method and apparatus for providing dynamic locks for global resources |
| US7289998B2 (en) * | 2004-06-24 | 2007-10-30 | International Business Machines Corporation | Method to update a data structure disposed in an embedded device |
| KR100763200B1 (ko) | 2006-02-24 | 2007-10-04 | 삼성전자주식회사 | 인터럽트 가능한 스레드 동기화 방법 및 장치 |
| CN104142865A (zh) * | 2014-07-18 | 2014-11-12 | 国家电网公司 | 一种基于线程同步的数据收集处理方法 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4716528A (en) * | 1986-02-03 | 1987-12-29 | International Business Machines Corporation | Method for managing lock escalation in a multiprocessing, multiprogramming environment |
| US5136712A (en) * | 1989-06-29 | 1992-08-04 | Digital Equipment Corporation | Temporary object handling system and method in an object based computer operating system |
| US5430860A (en) * | 1991-09-17 | 1995-07-04 | International Business Machines Inc. | Mechanism for efficiently releasing memory lock, after allowing completion of current atomic sequence |
| US5414839A (en) * | 1992-06-19 | 1995-05-09 | Digital Equipment Corporation | Hybrid lock escalation and de-escalation protocols |
| US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
-
1997
- 1997-06-30 US US08/885,566 patent/US6430638B1/en not_active Expired - Lifetime
-
1998
- 1998-06-19 DE DE69838366T patent/DE69838366T2/de not_active Expired - Lifetime
- 1998-06-19 EP EP98304868A patent/EP0889396B1/en not_active Expired - Lifetime
- 1998-06-30 JP JP18406398A patent/JP4076276B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0889396A1 (en) | 1999-01-07 |
| DE69838366D1 (de) | 2007-10-18 |
| JPH1185545A (ja) | 1999-03-30 |
| EP0889396B1 (en) | 2007-09-05 |
| US6430638B1 (en) | 2002-08-06 |
| DE69838366T2 (de) | 2008-05-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| AU707393B2 (en) | System and method for space efficient object locking | |
| US6546443B1 (en) | Concurrency-safe reader-writer lock with time out support | |
| US7035870B2 (en) | Object locking in a shared VM environment | |
| US5301337A (en) | Distributed resource management system using hashing operation to direct resource request from different processors to the processor controlling the requested resource | |
| US7031989B2 (en) | Dynamic seamless reconfiguration of executing parallel software | |
| US8412894B2 (en) | Value recycling facility for multithreaded computations | |
| US5862376A (en) | System and method for space and time efficient object locking | |
| US5297283A (en) | Object transferring system and method in an object based computer operating system | |
| US6182108B1 (en) | Method and system for multi-threaded processing | |
| US8145817B2 (en) | Reader/writer lock with reduced cache contention | |
| US5701470A (en) | System and method for space efficient object locking using a data subarray and pointers | |
| US6237043B1 (en) | System and method for adding highly optimized synchronization capability to objects at run-time | |
| US6223335B1 (en) | Platform independent double compare and swap operation | |
| US5893157A (en) | Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests | |
| WO2000046672A1 (en) | Busy-wait-free synchronization | |
| McKenney | Selecting locking primitives for parallel programming | |
| JP4076276B2 (ja) | 選択的なオブジェクトロッキングによるスレッド同期 | |
| US20030126187A1 (en) | Apparatus and method for synchronization in a multi-thread system of JAVA virtual machine | |
| US20060085460A1 (en) | System and method providing inlined stub | |
| US6662364B1 (en) | System and method for reducing synchronization overhead in multithreaded code | |
| US7117496B1 (en) | Event-based synchronization | |
| Pyarali et al. | A pattern language for efficient, predictable, scalable, and flexible dispatching mechanisms for distributed object computing middleware | |
| Giering III et al. | Using POSIX threads to implement Ada tasking: Description of work in progress | |
| Hon | Using objects in shared memory for C++ application | |
| EP0097258B1 (en) | Computing apparatus and method for operating the same |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050629 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070904 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071204 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080108 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080129 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110208 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120208 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120208 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130208 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130208 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140208 Year of fee payment: 6 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| EXPY | Cancellation because of completion of term |
