JPH1185545A - 選択的なオブジェクトロッキングによるスレッド同期 - Google Patents

選択的なオブジェクトロッキングによるスレッド同期

Info

Publication number
JPH1185545A
JPH1185545A JP10184063A JP18406398A JPH1185545A JP H1185545 A JPH1185545 A JP H1185545A JP 10184063 A JP10184063 A JP 10184063A JP 18406398 A JP18406398 A JP 18406398A JP H1185545 A JPH1185545 A JP H1185545A
Authority
JP
Japan
Prior art keywords
data
lock
routine
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.)
Granted
Application number
JP10184063A
Other languages
English (en)
Other versions
JP4076276B2 (ja
Inventor
Peter B Kessler
ビー.ケスラー ピーター
Mark B Reinhold
ビー.レインホールド マーク
Duncan Stuart Ritchie
スチュアート リッチー ダンカン
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 JPH1185545A publication Critical patent/JPH1185545A/ja
Application granted granted Critical
Publication of JP4076276B2 publication Critical patent/JP4076276B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-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)

Abstract

(57)【要約】 【課題】 選択的なオブジェクトロッキングを提供する
方法及び装置を提供する。 【解決手段】 先ず、ロックオブジェクトが選定され
る。ロックオブジェクトの同一性は、その後、オブジェ
クト呼出階層でオブジェクトに利用可能にされる。呼出
スレッドにより呼び出された第1のオブジェクトは、第
1の呼び出されたオブジェクトに関連するデータを保護
するために、ロックオブジェクト上でロックを得る。オ
ブジェクト呼出階層における他のオブジェクトは、それ
らのデータを保護するために、ロックオブジェクトを再
ロックする。本発明はまた、オブジェクトロッキングが
実行されないことを特定する呼出階層のための能力を提
供することで、選択的なオブジェクトロッキングを提供
する。これにより、呼出階層により呼び出されたオブジ
ェクトがオブジェクトロッキングを実行しないようにす
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチスレッドコ
ンピューティング環境に関し、より具体的には、選択的
なオブジェクトロッキングによりスレッドを同期する方
法及び装置に関する。
【0002】
【従来の技術】マルチスレッドコンピューティング環境
は、スレッドとして知られているプログラムの異なった
部分を同時に実行することを可能にする。近年では、マ
ルチスレッドコンピューティング環境は、マルチスレッ
ドアプリケーションによって提供される好都合な動作特
性のために、より普及するようになった。
【0003】マルチプロセシング環境におけるプロセス
実行を比較すると、セーブ及びリストアするランタイム
状態がより少ないので、スレッドの実行は、とても迅速
に開始されかつ終了される。スレッド間を迅速に切り替
えることができる特性は、比較的高水準のデータ一致性
を提供することができる。マルチスレッド環境において
は、データの一致性は、多数のスレッドが同時に同一デ
ータにアクセスできる能力に相当する。マルチスレッド
環境がマルチプロセッサシステムのときには、各スレッ
ドが別々のプロセッサで実行され、多数のスレッドが共
有データに同時にアクセスすることを可能にする。
【0004】
【発明が解決しようとする課題】マルチスレッドコンピ
ューティング環境によって好都合な動作特性が提供され
るにもかかわらず、マルチスレッドコンピューティング
環境には、欠点がないわけではない。具体的に言うと、
マルチスレッドアプリケーションでは、複数のスレッド
が同時に同一データにアクセスできるので、データ構造
及び変数の完全な状態を維持することは、特に興味深い
ものである。マルチプロセシング環境におけるプロセス
とは違って、スレッドは、一般に、単一のアドレス空間
及び一組の広域変数を共有し、主として、プログラムカ
ウンタ及びスタックポインタの値により識別される。従
って、何らかの共通にアクセス可能なデータの状態は、
他のスレッドによって読まれているのと同時に、1つの
スレッドによる変化を受けるので、データを信頼できな
いものにする。
【0005】多数のスレッドによる共通データへのアク
セスを制御するために、あるシステムは、スレッドによ
る共通データへのアクセスを同期し、かつ、シリアライ
ズする。マルチスレッド環境においては、スレッドを同
期することは、共通データ構造へのアクセスを制御する
機構を使用することに相当する。そのため、1つのスレ
ッドだけが、一定の時間に共通データ構造にアクセスす
ることができる。一般に、共通データにアクセスする多
数の要請は待ち行列に入り、オペレーティングシステ
ム、マルチスレッドシステム、或いは、他の機構のどち
らか一方により、一度に1つ処理される。
【0006】スレッドを同期するために、あるプログラ
ミング言語は、「モニタ」として知られているプログラ
ミング言語構造を含んでいる。モニタは、抽象的なデー
タ形式内への、変数,手順及び他のデータ形式のカプセ
ル化を提供する。モニタの変数,手順及び他のデータ
は、単一のアクセス手続によってのみアクセスされる。
これは、他のアクセス要請がその順番になるまで待ち行
列に入ったままで、1つのスレッドだけがいつでもモニ
タを積極的にアクセスすることを保証する。他のプログ
ラミング言語は、スレッドによって実行されたときに、
コードのブロックを効率的にロックする「同期された」
ステートメントを支援して、同期されたステートメント
を実行したスレッドだけが、コードのロックされたブロ
ックを実行することができるようにする。共通データに
影響を及ぼすコードは、その後、1つのスレッドだけが
ある一定の時間に共通データにアクセスできるように、
コードの同期されたブロックに置かれる。
【0007】オブジェクト指向環境では、スレッド同期
は、オブジェクトロッキングによって時には成し遂げら
れる。一般に、オブジェクトロッキングは、オブジェク
トに関連するロッキングデータを必要とするため、オブ
ジェクトに関連する手順を呼び出したスレッドだけが、
オブジェクトに関連するデータに変化を与える。オブジ
ェクト指向言語の固有の再利用性のため、ソフトウエア
デベロッパは、大規模な再利用可能なオブジェクトクラ
スライブラリを構築するのが普通である。ライブラリデ
ベロッパは、常に、オブジェクトクラスライブラリがど
のように使用されるか前もってわかるとは限らないの
で、オブジェクトロッキングは、一般に、ライブラリの
全てのオブジェクトに対し実行される。
【0008】オブジェクトロッキングは、複数のスレッ
ドが同時にデータをアクセスしないようにするが、ある
状況下では、オブジェクトロッキングは不要である。例
えば、あるアプリケーションは、単一のスレッドのみを
使用して、複数のスレッドが同時にオブジェクトデータ
にアクセスする心配を排除する。マルチスレッドアプリ
ケーションですら、たびたび、データは、オペレーティ
ングシステムにより、或いは、マルチスレッド環境によ
るより高水準で提供されるスレッド安全機構で保護され
る。かかる状況の両者では、オブジェクト呼出階層にお
けるオブジェクトはロックされる必要がない。従って、
ロック関連オペレーションの自動実行の間に消費される
時間及びシステムリソースは無駄になる。
【0009】呼び出されたオブジェクトは、それ自体が
他のオブジェクトを呼び出す他のオブジェクトを呼び出
すので、高水準オブジェクトを呼び出すことにより、多
数のオブジェクトをロックさせることとなる。呼出階層
の深さには理論上の限界がない。従って、ロッキングオ
ペレーションが不要なとき、組み込まれたロックオペレ
ーションによって無駄にされる時間には限界がない。オ
ブジェクトをロックすることは、かなりのシステムリソ
ース及び時間を必要とする。例えば、あるシステムで
は、オブジェクト上でロックを得ることは、最初のロッ
クがロックテーブル上で得られ、そして、ロックテーブ
ルエントリがロックを得るべきスレッドに関する情報に
基づいて構成されることを必要とする。
【0010】図1に図示されたオブジェクト呼出階層1
00を検討する。動的な呼出階層100は、オブジェク
トA102,オブジェクトB104及びオブジェクトC
106を含む。オブジェクトA102は、オブジェクト
A102に関連する変数及びデータ構造等のデータ10
8を含む。オブジェクトA102はまた、データ108
に作用する手順110を含む。同様に、オブジェクトB
104は、オブジェクトB104に関連する変数及びデ
ータ構造等のデータ112を含む。オブジェクトB10
4はまた、データ112に作用する手順114を含む。
最後に、オブジェクトA102及びオブジェクトB10
4と同様に、オブジェクトC106は、オブジェクトC
106に関連する変数及びデータ構造等のデータ116
を含む。オブジェクトC106はまた、データ116に
作用する手順118を含む。
【0011】図1のオブジェクト呼出階層100により
図示されるように、オブジェクトA102の手順110
を呼び出すことにより、オブジェクトB104の手順1
14が呼び出され、次に、オブジェクトC106の手順
118が呼び出される。マルチスレッド環境では、複数
のスレッド(図示せず)は、夫々、オブジェクトA10
2,B104,C106に関連する手順110,11
4,118を呼び出す。さらに、かかるスレッドが非同
期であれば、データ108,112,116は、複数の
スレッドにより更新され、データ108,112,11
6が信頼できないものとなる。
【0012】一般的な同期アプローチによれば、手順1
00が呼び出されたとき、コード120の実行により、
データ108に含まれるロックオブジェクトA122上
でロックが得られる。ロックオブジェクトA122がロ
ックされると、ロックオブジェクトA122を保持する
スレッドだけが、データ108に変更をもたらす。特
に、手順110はまた、データ108に含まれるデータ
A124にアクセスするコード123を含むので、ロッ
クオブジェクトA122を保持するスレッドだけが、コ
ード123を実行させ、かつ、データA124に変更を
もたらす。
【0013】また、手順110を呼び出すことにより、
オブジェクトB104の手順114を呼び出すコード1
25が実行される。手順114を呼び出すことにより、
コード128の実行によりロックオブジェクトB126
上でロックが得られる。そして、コード130の実行に
より、オブジェクトC106の手順118が呼び出され
る。そして、コード134の実行により、ロックオブジ
ェクトC132上でロックが得られる。
【0014】手順118は、データ116のデータC1
36にアクセスするコード135を含む。手順118は
また、ロックオブジェクトC132上でロックを解放さ
せるコード137を含む。制御はその後手順114へと
戻り、ここで、コード138は、データ112のデータ
B139にアクセスする。そして、ロックオブジェクト
B126上のロックは、コード140の実行によって解
放され、制御は手順110へと戻る。最後に、コード1
42の実行により、ロックオブジェクトA122上のロ
ックが解放される。
【0015】組み込まれたロッキングコード120,1
42,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のデータを保護
するために再ロックされる。
【0018】本発明の他の様相によれば、ルーチン呼出
階層におけるルーチンに関連するデータを保護するため
の方法が提供される。先ず、ロックオブジェクトデータ
がルーチンに提供される。ロックオブジェクトデータ
が、ロックオブジェクトを特定していれば、ルーチンに
より、特定されたロックオブジェクトがロックされる。
これに対して、ロックオブジェクトデータが、オブジェ
クトロッキングが行われていないことを示す所定値を特
定していれば、ルーチンは、どんなロックオブジェクト
もロックしない。
【0019】本発明の他の様相によれば、第1のルーチ
ンに関連する第1のデータと、第2のルーチンに関連す
る第2のデータと、を保護するためのメモリを備えたコ
ンピュータシステムが提供される。メモリは、第1のル
ーチン、第1のデータ、第2のルーチン、第2のデータ
及びロックオブジェクトを含む。ロックオブジェクト
は、第1のデータを保護するための第1のルーチンによ
ってロックされ、また、第1のデータを保護するための
第1のルーチンによってロックされている間、第2のデ
ータを保護するための第2のルーチンによって再ロック
される。
【0020】本発明の他の様相によれば、搬送波に包含
され、命令セグメントを表わすコンピュータデータ信号
は、第1のルーチンに関連する第1のデータと、第2の
ルーチンに関連する第2のデータと、の両方を保護する
ために提供される。1つ以上のプロセッサにより実行さ
れたとき、一連の命令は、第1のルーチンに対してロッ
クオブジェクトを第1のデータを保護するためにロック
させるようにする。そして、第2のルーチンにより、ロ
ックオブジェクトが第1のデータを保護するためにロッ
クされる間、同一のロックオブジェクトが第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は、オブジェクトB
204に関連する変数及びデータ構造等のデータ212
を含む。データ212は、オブジェクトB204に関連
するロックオブジェクトB213を含む。オブジェクト
B204はまた、データ212に作用する手順214を
含む。オブジェクトC206は、オブジェクトC206
に関連する変数及びデータ構造等のデータ216を含
む。データ216は、オブジェクトC206に関連する
ロックオブジェクトC217を含む。オブジェクトC2
06はまた、データ216に作用する手順218を含
む。
【0027】オブジェクト呼出階層200におけるオブ
ジェクト202,204,206の間でなされる呼出
は、階層関係を定義する。階層関係は、オブジェクトA
202を、オブジェクトB204及びオブジェクトC2
06の両方に対して「上位」レベルオブジェクトとし、
一方、オブジェクトC206は、オブジェクトA202
及びオブジェクトB204の両方に対して「下位」レベ
ルオブジェクトとなる。これに対して、オブジェクトB
204は、オブジェクトA202に対して「下位」レベ
ルオブジェクトとなるが、オブジェクトC206に対し
ては「上位」レベルオブジェクトとなる。これは、オブ
ジェクトA202を呼び出すことによりオブジェクトB
204が呼び出され、このことは、以下により詳細に説
明するように、順次、オブジェクトC206もまた呼び
出せることになるためである。
【0028】本発明の一実施形態によれば、オブジェク
トA202,オブジェクトB204及びオブジェクトC
206に関連するロックオブジェクトA209,B21
3,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がロックされると、手順2
10を呼び出したスレッドは、データ208に変更をも
たらす独占的な権利を有する。手順210は、コード2
22より前に他のコードを含むので、他のスレッドは、
手順210を呼び出すことが可能となる。しかしなが
ら、ロックオブジェクトC217上でロックが解除され
るまで、他のスレッドは、コード222を実行すること
ができない。手順210はまた、データA224にアク
セスするが、ロックオブジェクトC217上でロックが
解除されるまで、他のスレッドによって実行されること
ができないコード223を含む。
【0031】ステップ308では、コード225の実行
により、オブジェクトB204の手順214が呼び出さ
れる。本実施形態では、コード225は、ロックオブジ
ェクトC217がオブジェクトB204によって使用さ
れるロックオブジェクトであることを特定する呼出包含
情報を含む。ステップ310では、オブジェクトA20
2によってロックオブジェクト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はまた、データB
235にアクセスするコード234を含む。データB2
35は、ロックオブジェクトC217上でロックが解除
されるまで、他のスレッドによって実行されることがで
きない。
【0034】ステップ318では、コード236の実行
により、オブジェクトB204によって保持されるロッ
クオブジェクトC217上で1つのロックが解除され、
制御を手順210に戻す。最後に、ステップ320で
は、コード238の実行により、オブジェクトA202
によって保持されるロックオブジェクトC217上でロ
ックが解除される。
【0035】このアプローチによって説明されるよう
に、スレッドがオブジェクト呼出階層200において手
順210,214,218のいずれかを呼び出すと、ロ
ックオブジェクトC217がロックされる。これによ
り、他のスレッドが呼び出されたオブジェクトに関連す
るデータに変更をもたらすことを防止する。さらに、ロ
ックオブジェクトC217がオブジェクトA202,B
204,C206によって使用されるロックオブジェク
トに選定されているので、ロックオブジェクトC217
が再利用される。これにより、再ロックオペレーション
がロックオペレーションの代わりに利用されるので、シ
ステムリソースを節約し、かつ、性能を改善する。
【0036】本発明の実施形態による選択的なオブジェ
クトロッキングを使用したスレッドを同期するボトムア
ップアプローチのコード実施の一例は、下記に説明され
る。コード例は、サンマイクロシステムズインコーポレ
ーテッド(Sun MicrosystemsInc. )によるJava(商
標)プログラミング言語に似ているが、かかる例は、単
に目的を説明するのためのものにすぎず、実際のコード
実行を表示することを意味するものではない。 URL u = ... // コード省略; InputStream is = u.getContents(); BufferedInputStream bis = new BufferedInputStream(is, is) ; ThingieStream ts = new ThingieStream(bis, is); Thingie t; t = ts.read(); public class ThingieStream{ public ThingieStream(InputStream is, Object lock) { this.input = is; this.lock = lock; } public Thingie read() { synchronized(this.lock) { ...this.input.read()... } } } 先の説明では、オブジェクト呼出階層におけるオブジェ
クトは、ロックオブジェクトに選定されたが、オブジェ
クト呼出階層の外部のオブジェクトが、本発明の範囲か
ら逸脱することなくロックオブジェクトに選定されても
よい。
【0037】前記例において、オブジェクトA202及
びオブジェクトB204は、呼び出したオブジェクトに
対し、それらのために特定されたロックオブジェクトを
特定するために形成される。しかしながら、オブジェク
トは、呼び出したロックオブジェクトに対し、それらの
ために特定されたロックオブジェクトを特定する必要は
ない。例えば、オブジェクトA202がオブジェクトB
204によって使用されるロックオブジェクトとしてロ
ックオブジェクトC217を特定していても、オブジェ
クトD(図示せず)が、オブジェクトA202によって
使用されるロックオブジェクトとして特定されてもよ
い。2.トップダウンアプローチ ボトムアップアプローチと同様に、トップダウンアプロ
ーチは、一般に、一度だけロックされ、その後オブジェ
クト呼出階層における他の呼び出されたオブジェクトに
よって再ロックされるロックオブジェクトを選定するこ
とを意味する。
【0038】トップダウンアプローチによれば、呼出ス
レッドは、上位階層オブジェクトをロックオブジェクト
に選定する。例えば、図2を再び参照すると、呼出スレ
ッド(図示せず)は、それ自体のロックオブジェクトを
ロックオブジェクトに選定し、、選定されたロックオブ
ジェクトの同一性をオブジェクトA202に渡す。手順
210が呼び出されると、選定されたロックオブジェク
トの同一性は、その後、かかるオブジェクトの同期され
た実行の間、オブジェクト呼出階層200において全て
のオブジェクトA202,B204,C206によって
使用される。しかしながら、トップダウンアプローチに
よれば、呼出階層に明確に関連しない他のオブジェクト
が、ロックオブジェクトとして選択されてもよい。
【0039】トップダウンアプローチは、デベロッパが
オブジェクトレベルの同期を既に実行したオブジェクト
クラスライブラリに関連する手順を呼び出すプログラム
を構築する場合において、特に都合のよいものである。3.任意のロッキングアプローチ 1つのスレッドだけがオブジェクトを呼び出している状
態では、シングルスレッドアプリケーションのような、
スレッド同期は必要ない。しかしながら、オブジェクト
ロッキングは、シングルスレッドアプリケーションによ
って使用されるオブジェクトライブラリに組み込まれて
もよい。この状態では、オブジェクトロッキングは必要
でなく、貴重なシステムリソースを無駄にする。
【0040】オブジェクトクラスライブラリのデベロッ
パは、ライブラリが開発されたときに、ライブラリがシ
ングルスレッドアプリケーションによってのみ使用され
るか否か、或いは、何らかの他の理由によりオブジェク
トロッキングが必要ないことを常にわかるわけではない
ので、スレッド同期は、一般に、ライブラリに組み込ま
れる。オブジェクトロッキングの有無にかかわらず複製
のライブラリを提供する代わりの実施は、アプリケーシ
ョンデベロッパがマルチスレッドアプリケーションによ
る非同期ライブラリを不注意に使用する危険性があり、
それゆえに、一般に回避される。従って、標準の実施
は、オブジェクトロッキングを伴った同期されたオブジ
ェクトクラスライブラリを提供することである。
【0041】任意のロッキングアプローチによれば、オ
ブジェクトロッキングが使用されるか否かを特定する能
力が提供される。スレッド同期が必要でない状態でオブ
ジェクトロッキングを回避することは、オブジェクトを
ロックすることに通常起因するシステムリソースの使用
を排除し、ロックを得るのに必要とされる時間を節約す
る。さらに、ロックオブジェクトがオブジェクトに動的
に割り当てられた状態では、ロックオブジェクトのため
に通常必要とされる領域が節約される。単一のオブジェ
クトのために節約される領域は、数バイトのデータにす
ぎないが、システムリソース及び時間を節約すること
は、数千の、或いは、ことによると数百万のオブジェク
トを使用するアプリケーションにとっては、かなりのも
のとなる。
【0042】任意のロッキングアプローチによれば、オ
ブジェクトロッキングパラメータは、各オブジェクトコ
ンストラクタ呼出に含まれる。オブジェクトロッキング
パラメータは、オブジェクトロッキングがオブジェクト
によって使用されるか否かを特定し、もしそうであれ
ば、そのオブジェクトはロックされる。つまり、パラメ
ータは、(1) ロックオブジェクトを特定するか、或い
は、(2) オブジェクトロッキングが行われないことを示
す所定値を特定するか、のいずれかを行う。
【0043】ロックオブジェクトが特定されたとき、オ
ブジェクトの同期手順は、特定されたロックオブジェク
ト上でロックを得る。これに対して、オブジェクトロッ
キングが行われないことを示す所定値が特定されたと
き、呼び出された手順は、いかなるオブジェクトロッキ
ングも実行しない。本発明の一実施形態によれば、オブ
ジェクトロッキングがないことを特定する所定値とし
て、NULL値が使用される。しかしながら、他の所定
値が、本発明の範囲から逸脱せずに使用されてもよい。
【0044】例えば、図2を再び参照すると、手順21
0がオブジェクト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はまた、ランダムアクセスメモリ(RA
M)或いは他の動的な記憶装置等のプロセッサ504に
よって実行される情報及び命令を記憶するためのバス5
02に接続されるメインメモリ506を含む。メインメ
モリ506はまた、プロセッサ504による命令実行の
間、一時的変数或いは他の中間情報を記憶するために使
用されてもよい。コンピュータシステム500はまた、
プロセッサ504のための静的な情報及び命令を記憶す
るための、バス502に接続されたリードオンリーメモ
リ(ROM)508或いは他の静的な記憶装置を含む。
磁気ディスク或いは光ディスク等の記憶装置510はま
た、情報及び命令を記憶するために提供されかつバス5
02に接続される。
【0052】コンピュータシステム500はまた、コン
ピュータユーザに情報を表示するための、バス502を
介してカソードレイチューブ(CRT)等のディスプレ
イ512に接続される。英数字及び他のキーを含む入力
装置514はまたプロセッサ504に対して情報及びコ
マンド選択を伝達するために、提供されかつバス502
に接続される。ユーザ入力装置の他の形式は、プロセッ
サ504に方向情報及びコマンド選択を伝達すると共
に、ディスプレイ512上のカーソルの動きを制御する
マウス,トラックボール或いはカーソル移動キー等のカ
ーソルコントロール516である。この入力装置は、一
般に、装置が面における位置を特定することを可能にす
る第1の軸(例えば、x)及び第2の軸(例えば、y)
の2軸において2つの自由度を有している。
【0053】本発明は、選択的なオブジェクトロッキン
グによるスレッドを同期するコンピュータシステム50
0の使用に関する。本発明の一実施形態によれば、選択
的なオブジェクトロッキングによるスレッド同期は、メ
インメモリ506に含まれる一連の命令を実行するプロ
セッサ504に応じて、コンピュータシステム500に
よって提供される。このような命令は、記憶装置510
のような他のコンピュータ読み取り可能な媒体から、メ
インメモリ506に読み込まれる。しかしながら、コン
ピュータ読み取り可能な媒体は、記憶装置510のよう
な装置に限定されない。例えば、コンピュータ読み取り
可能な媒体は、フロッピーディスク,フレキシブルディ
スク,ハードディスク,磁気テープ或いは他の磁気媒
体,CD−ROM,他の光媒体,RAM,PROM,E
PROM,FLASH−EPROM,他のメモリチップ
或いはカートリッジ,コンピュータが読み込める他の媒
体を含む。メインメモリ506に含まれる一連の命令の
実行により、プロセッサ504が前述した処理ステップ
を実行する。他の実施形態では、ハードウエア(hard-w
ired)電気回路が、本発明を実行するために、ソフトウ
エア命令の代わりに、或いは、ソフトウエア命令と協働
して使用されてもよい。このように、本発明の実施形態
は、ハードウエア電気回路とソフトウエアの特定の組合
わせに限定されるものではない。
【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及び通信インタフェース51
8を介してアプリケーションプログラムに要求コードを
送信する。本発明によれば、このようなダウンロードさ
れたアプリケーションは、ここで述べたように、選択的
なオブジェクトロッキングを使用するスレッド同期に対
応する。
【0057】受信コードは、受信されると、プロセッサ
504によって実行され、及び/或いは、後の実行のた
めに、記憶装置510或いは他の不揮発性記憶装置に記
憶される。このように、コンピュータ500は、搬送波
形状でアプリケーションコードを得る。上記記載におい
て、本発明は、特定の実施形態に関して説明された。し
かしながら、種々の変更及び変化が本発明のより広範囲
の精神及び範囲から逸脱することなく、なされることは
明らかである。それゆえに、明細書及び図面は、制限的
な意味よりもむしろ実例となるものであるとみなされ
る。
【0058】
【発明の効果】本発明は、複数のスレッドによって共通
にアクセス可能なデータが同時にアクセスされないよう
に、スレッドを同期する従来のアプローチを越えたいく
つかの有利な点を提供する。特に、本発明は、スレッド
によって呼び出されるオブジェクト呼出階層で、1つ以
上のオブジェクトによって使用されるロックオブジェク
トを選定する呼出スレッドのための能力を提供する。こ
の能力の重要な利点は、一旦最初のロックが得られる
と、再ロックオペレーションを実行するために、必要な
システムリソースがかなり少なくてすむことである。ま
た、ロックオブジェクトをロックするよりもロックオブ
ジェクトを再ロックする方が、より時間が少ない。さら
に、シングルスレッドアプリケーション、或いは、オブ
ジェクトロッキングが必要でない他の状態では、本発明
は、オブジェクト毎に基づくオブジェクトロッキングを
無視する柔軟性を提供する。処理の見地からシステムリ
ソースを節約することに加えて、あるシステムでは、こ
れは呼び出された各オブジェクトに対して、ロックオブ
ジェクトの割り当てを回避する。
【図面の簡単な説明】
【図1】 従来技術のオブジェクト呼出階層を示すブロ
ック図
【図2】 本発明の一実施形態によるオブジェクト呼出
階層を示すブロック図
【図3】 本発明の一実施形態によるマルチスレッド環
境におけるオブジェクトに関連するデータを保護する手
順を示すフローチャート
【図4】 本発明の他の実施形態によるマルチスレッド
環境におけるオブジェクトに関連するデータを保護する
手順を示すフローチャート
【図5】 本発明が実行されるコンピュータシステムの
ブロック図
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 マーク ビー.レインホールド アメリカ合衆国、カリフォルニア 94025、 メンロパーク、イエール ロード 272 (72)発明者 ダンカン スチュアート リッチー カナダ国、ブリティッシュコロンビア ブ イ6エイチ−1アール3、バンクーバー、 ウエスト 14 アベニュー 4−1476

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】第1のルーチンに関連する第1のデータ
    と、第2のルーチンに関連する第2のデータと、の両方
    を保護する方法であって、 前記第1のルーチンは、前記第1のデータを保護するた
    めにロックオブジェクトをロックする工程と、 前記第2のルーチンは、前記第2のデータを保護するた
    めに前記ロックオブジェクトを再ロックする工程と、 を含んで構成されることを特徴とする方法。
  2. 【請求項2】前記第1のルーチンは、前記第2のルーチ
    ンを呼び出す工程をさらに含む構成である請求項1記載
    の方法。
  3. 【請求項3】前記第1のルーチンに関連するオブジェク
    トを前記ロックオブジェクトに選定する工程をさらに含
    む構成である請求項1記載の方法。
  4. 【請求項4】前記第2のルーチンに関連するオブジェク
    トを前記ロックオブジェクトに選定する工程をさらに含
    む構成である請求項1記載の方法。
  5. 【請求項5】第3のルーチンがロックオブジェクトパラ
    メータを前記第2のルーチンに提供する工程と、 前記ロックオブジェクトパラメータがロックオブジェク
    トを特定する場合に、前記第2のルーチンが前記ロック
    オブジェクトパラメータにより特定された前記ロックオ
    ブジェクトをロックする工程と、 前記ロックオブジェクトパラメータがオブジェクトロッ
    キングが実行されないことを特定する場合に、前記第2
    のルーチンがロックオブジェクトをロックしない工程
    と、 をさらに含む構成である請求項1記載の方法。
  6. 【請求項6】前記第1のルーチンは、第1のオブジェク
    トに関連する第1の手順であり、 前記第2のルーチンは、第2のオブジェクトに関連する
    第2の手順であり、 前記第1のルーチンが前記第1のデータを保護するため
    にロックオブジェクトをロックする工程は、前記第1の
    手順が前記第1のデータを保護するためにロックオブジ
    ェクトをロックする工程をさらに含み、 前記第2のルーチンが前記ロックオブジェクトを再ロッ
    クする工程は、前記第2の手順が前記第2のデータを保
    護するために前記ロックオブジェクトを再ロックする工
    程をさらに含む構成である請求項1記載の方法。
  7. 【請求項7】前記第1の手順が、前記第2の手順を呼び
    出す工程をさらに含む構成である請求項6記載の方法。
  8. 【請求項8】前記第1の手順に関連するオブジェクトを
    前記ロックオブジェクトに選定する工程をさらに含む構
    成である請求項6記載の方法。
  9. 【請求項9】前記第2の手順に関連するオブジェクトを
    前記ロックオブジェクトに選定する工程をさらに含む構
    成である請求項6記載の方法。
  10. 【請求項10】呼出階層におけるルーチンに関連するデ
    ータを選択的に保護する方法であって、 前記データへのアクセスを制御するためにロックが使用
    されるかどうかを示すパラメータデータを受け取る工程
    と、 前記パラメータデータが前記データへのアクセスを制御
    するためにロックが使用されることを示す場合に、前記
    データへのアクセスを制御するロックを、当該データに
    アクセスする前に、得る工程と、 前記パラメータデータが前記データへのアクセスを制御
    するためにロックが使用されていないことを示す場合
    に、前記データへのアクセスを制御するロックを得ない
    工程と、 を含んだ構成であることを特徴とする方法。
  11. 【請求項11】前記パラメータデータは、ロックオブジ
    ェクトを特定することで前記データへのアクセスを制御
    するためにロックが使用されることを特定し、 前記方法は、前記パラメータデータがロックオブジェク
    トを特定する場合に、前記データへのアクセスを制御す
    るために特定された前記ロックオブジェクト上でロック
    を得る工程をさらに含み、 前記パラメータデータは、所定値を特定することで前記
    データへのアクセスを制御するためにロックが使用され
    ないことを特定し、 前記方法は、前記パラメータデータが所定値を特定する
    場合に、前記データへのアクセスを制御するロックを得
    ない工程をさらに含む構成である請求項10記載の方
    法。
  12. 【請求項12】前記ルーチンは、第1のルーチンであ
    り、 前記方法は、前記第2のルーチンが前記第1のルーチン
    を呼び出す工程をさらに含んだ構成である請求項10記
    載の方法。
  13. 【請求項13】前記ルーチン呼出階層は、オブジェクト
    呼出階層であり、 前記ルーチンは、前記オブジェクト呼出階層におけるオ
    ブジェクトに関連する手順であり、 前記データは、前記オブジェクト呼出階層における前記
    オブジェクトに関連し、 前記データへのアクセスを制御するためにロックが使用
    されるかどうかを示すパラメータデータを受け取る工程
    は、前記呼出階層で、前記ルーチンに関連する手順が前
    記データへのアクセスを制御するためにロックが使用さ
    れるかどうかを示すパラメータデータを受け取る工程を
    さらに含む構成である請求項10記載の方法。
  14. 【請求項14】第1のルーチンに関連する第1のデータ
    と、第2のルーチンに関連する第2のデータと、を保護
    するメモリを備えたコンピュータシステムであって、 前記メモリは、 前記第1のルーチンと、 前記第1のデータと、 前記第2のルーチンと、 前記第2のデータと、 前記第1のデータを保護するために前記第1のルーチン
    によりロックされると共に、前記第1のデータを保護す
    るためにロックオブジェクトがロックされる間、前記第
    2のデータを保護するために前記第2のルーチンにより
    再ロックされるロックオブジェクトと、 を含んで構成されることを特徴とするコンピュータシス
    テム。
  15. 【請求項15】前記ロックオブジェクトは、前記第2の
    ルーチンに関連する構成である請求項14記載のコンピ
    ュータシステム。
  16. 【請求項16】第1のルーチンに関連する第1のデータ
    と、第2のルーチンに関連する第2のデータと、の両方
    を保護する複数の一連の命令を記憶したコンピュータ読
    み取り可能な媒体であって、 一連の命令を含む前記複数の一連の命令は、1つ以上の
    プロセッサにより実行されたとき、1つ以上にプロセッ
    サに、前記第1のデータを保護するために前記第1のル
    ーチンがロックオブジェクトをロックする工程と、 前記第2のデータを保護するために前記第2のルーチン
    が前記ロックオブジェクトを再ロックする工程と、 を実行させる構成であることを特徴とするコンピュータ
    読み取り可能な媒体。
  17. 【請求項17】前記コンピュータ読み取り可能な媒体
    は、前記第1のルーチンが前記第2のルーチンを呼び出
    す工程を実行する命令をさらに含む構成である請求項1
    6記載のコンピュータ読み取り可能な媒体。
  18. 【請求項18】前記コンピュータ読み取り可能な媒体
    は、前記第1のルーチンに関連するオブジェクトを前記
    ロックオブジェクトに選定する工程を実行する命令をさ
    らに含む構成である請求項16記載のコンピュータ読み
    取り可能な媒体。
  19. 【請求項19】前記コンピュータ読み取り可能な媒体
    は、前記第1のルーチンに関連するオブジェクトを前記
    ロックオブジェクトに選定する工程を実行する命令をさ
    らに含む構成である請求項16記載のコンピュータ読み
    取り可能な媒体。
  20. 【請求項20】前記コンピュータ読み取り可能な媒体
    は、 第3のルーチンがロックオブジェクトパラメータを前記
    第2のルーチンに提供する工程を実行する命令と、 前記ロックオブジェクトパラメータがロックオブジェク
    トを特定する場合に、前記第2のルーチンが前記ロック
    オブジェクトパラメータにより特定された前記ロックオ
    ブジェクトをロックする工程を実行する命令と、 前記ロックオブジェクトパラメータがロックオブジェク
    トが実行されないことを特定する場合に、前記第2のル
    ーチンがロックオブジェクトをロックしない工程を実行
    する命令と、 をさらに含んだ構成である請求項16記載のコンピュー
    タ読み取り可能な媒体。
  21. 【請求項21】前記第1のルーチンは、第1のオブジェ
    クトに関連する第1の手順であり、 前記第2のルーチンは、第2のオブジェクトに関連する
    第2の手順であり、 前記第1のルーチンが前記第1のデータを保護するため
    にロックオブジェクトをロックする工程は、前記第1の
    手順が前記第1のデータを保護するためにロックオブジ
    ェクトをロックする工程をさらに含み、 前記第2のルーチンが前記ロックオブジェクトを再ロッ
    クする工程は、前記第2の手順が前記第2のデータを保
    護するために前記ロックオブジェクトを再ロックする工
    程をさらに含む構成である請求項16記載のコンピュー
    タ読み取り可能な媒体。
  22. 【請求項22】前記コンピュータ読み取り可能な媒体
    は、前記第1の手順が前記第2の手順を呼び出す工程を
    実行する命令をさらに含む構成である請求項21記載の
    コンピュータ読み取り可能な媒体。
  23. 【請求項23】前記コンピュータ読み取り可能な媒体
    は、前記第1の手順に関連するオブジェクトを前記ロッ
    クオブジェクトに選定する手順を実行する命令をさらに
    含む構成である請求項21記載のコンピュータ読み取り
    可能な媒体。
  24. 【請求項24】前記コンピュータ読み取り可能な媒体
    は、前記第2の手順に関連するオブジェクトを前記ロッ
    クオブジェクトに選定する工程を実行する命令をさらに
    含む構成である請求項21記載のコンピュータ読み取り
    可能な媒体。
  25. 【請求項25】搬送波に包含され、1つ以上のプロセッ
    サにより実行されたとき、前記1つ以上のプロセッサに
    対して、第1のルーチンに関連する第1のデータと、第
    2のルーチンに関連する第2のデータと、の両方を保護
    させる一連の命令を表わすコンピュータデータ信号であ
    って、 前記一連の命令は、 前記第1のルーチンが前記第1のデータを保護するため
    にロックオブジェクトをロックする工程を実行する命令
    と、 前記第2のルーチンが前記第2のデータを保護するため
    に前記ロックオブジェクトを再ロックする工程を実行す
    る命令と、 を含む構成であることを特徴とするコンピュータデータ
    信号。
  26. 【請求項26】前記一連の命令は、前記第1のルーチン
    が前記第2のルーチンを呼び出す工程を実行する命令を
    さらに含む構成である請求項25記載のコンピュータデ
    ータ信号。
  27. 【請求項27】前記一連の命令は、前記第1のルーチン
    に関連するオブジェクトを前記ロックオブジェクトに選
    定する工程を実行する命令をさらに含む構成である請求
    項25記載のコンピュータデータ信号。
  28. 【請求項28】前記一連の命令は、前記第1のルーチン
    に関連するオブジェクトを前記ロックオブジェクトに選
    定する工程を実行する命令をさらに含む構成である請求
    項25記載のコンピュータデータ信号。
  29. 【請求項29】前記一連の命令は、 第3のルーチンがロックオブジェクトパラメータを前記
    第2のルーチンに提供する工程を実行する命令と、 前記ロックオブジェクトパラメータがロックオブジェク
    トを特定する場合に、前記第2のルーチンが前記ロック
    オブジェクトパラメータにより特定された前記ロックオ
    ブジェクトをロックする工程を実行する命令と、 前記ロックオブジェクトパラメータがオブジェクトロッ
    キングが実行されないことを特定する場合に、前記第2
    のルーチンがロックオブジェクトをロックしない工程を
    実行する命令と、 をさらに含む構成である請求項25記載のコンピュータ
    データ信号。
  30. 【請求項30】前記第1のルーチンは、第1のオブジェ
    クトに関連する第1の手順であり、 前記第2のルーチンは、第2のオブジェクトに関連する
    第2の手順であり、 前記第1のルーチンが前記第1のデータを保護するため
    にロックオブジェクトをロックする工程は、前記第1の
    手順が前記第1のデータを保護するためにロックオブジ
    ェクトをロックする工程と、 前記第2のルーチンが前記ロックオブジェクトを再ロッ
    クする工程は、前記第2の手順が前記第2のデータを保
    護するために前記ロックオブジェクトを再ロックす工程
    と、 をさらに含む構成である請求項25記載のコンピュータ
    データ信号。
  31. 【請求項31】前記一連の命令は、前記第1の手順が前
    記第2の手順を呼び出す工程を実行する命令をさらに含
    む構成である請求項30記載のコンピュータデータ信
    号。
  32. 【請求項32】前記一連の命令は、前記第1の手順に関
    連するオブジェクトを前記ロックオブジェクトに選定す
    る工程を実行する命令をさらに含む構成である請求項3
    0記載のコンピュータデータ信号。
  33. 【請求項33】前記一連の命令は、前記第2の手順に関
    連するオブジェクトを前記ロックオブジェクトに選定す
    る工程を実行する命令をさらに含む構成である請求項3
    0記載のコンピュータデータ信号。
JP18406398A 1997-06-30 1998-06-30 選択的なオブジェクトロッキングによるスレッド同期 Expired - Lifetime JP4076276B2 (ja)

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 true JPH1185545A (ja) 1999-03-30
JP4076276B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046672A1 (en) * 1999-02-05 2000-08-10 Sun Microsystems, Inc. Busy-wait-free synchronization
US6735760B1 (en) 2000-11-08 2004-05-11 Sun Microsystems, Inc. Relaxed lock protocol

Families Citing this family (8)

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

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046672A1 (en) * 1999-02-05 2000-08-10 Sun Microsystems, Inc. Busy-wait-free synchronization
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

Also Published As

Publication number Publication date
EP0889396A1 (en) 1999-01-07
DE69838366D1 (de) 2007-10-18
EP0889396B1 (en) 2007-09-05
US6430638B1 (en) 2002-08-06
DE69838366T2 (de) 2008-05-29
JP4076276B2 (ja) 2008-04-16

Similar Documents

Publication Publication Date Title
AU707393B2 (en) System and method for space efficient object locking
US7031989B2 (en) Dynamic seamless reconfiguration of executing parallel software
US7035870B2 (en) Object locking in a shared VM environment
US8412894B2 (en) Value recycling facility for multithreaded computations
US5701470A (en) System and method for space efficient object locking using a data subarray and pointers
US6438616B1 (en) Method and apparatus for fast, local corba object references
US6546443B1 (en) Concurrency-safe reader-writer lock with time out support
US5197148A (en) Method for maintaining data availability after component failure included denying access to others while completing by one of the microprocessor systems an atomic transaction changing a portion of the multiple copies of data
US6237043B1 (en) System and method for adding highly optimized synchronization capability to objects at run-time
JPH09106356A (ja) マルチスレッディング・セイフでないリソースに対する順次アクセスを実現するための方法並びに装置
JPH1131081A (ja) オブジェクトベースシステムにおけるスレッド同期を行う方法およびコンピュータシステム、並びに、そのためのコンピュータプログラム製品
US5893157A (en) Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
JPH11327919A (ja) オブジェクト指向割込みシステム用の方法およびデバイス
US6223335B1 (en) Platform independent double compare and swap operation
US20030126187A1 (en) Apparatus and method for synchronization in a multi-thread system of JAVA virtual machine
JP2002505471A (ja) 遠隔処理の中断および継続の方法と装置
US6980997B1 (en) System and method providing inlined stub
JPH11506552A (ja) pipes及びfifosを用いてマルチプロセッサ・コンピュータ・システムのファイルをアクセスする方法
US6487652B1 (en) Method and apparatus for speculatively locking objects in an object-based system
JP4076276B2 (ja) 選択的なオブジェクトロッキングによるスレッド同期
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
EP1480124B1 (en) Method and system for associating resource pools with operating system partitions
US20040133893A1 (en) Method and apparatus for managing environment variables in a multithreaded user process
Nett et al. Nested Dynamic Actions-How to Solve the Fault Containment Problem in a Cooperative Action Model.
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