JP2003536118A - マルチスレッドコンピュータシステムにおけるモニタ変換 - Google Patents
マルチスレッドコンピュータシステムにおけるモニタ変換Info
- Publication number
- JP2003536118A JP2003536118A JP2000601526A JP2000601526A JP2003536118A JP 2003536118 A JP2003536118 A JP 2003536118A JP 2000601526 A JP2000601526 A JP 2000601526A JP 2000601526 A JP2000601526 A JP 2000601526A JP 2003536118 A JP2003536118 A JP 2003536118A
- Authority
- JP
- Japan
- Prior art keywords
- monitor
- thread
- heavyweight
- lightweight
- heavy weight
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000006243 chemical reaction Methods 0.000 title description 6
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 28
- 238000012795 verification Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Abstract
Description
トウェイトモニタからヘビーウェイトモニタへ変換するための方法および装置に
関するものである。より詳細には、本発明は、オブジェクトベースのコンピュー
タシステムにおいて、競合オブジェクトと関連付けられたライトウェイトモニタ
を、対応するヘビーウェイトモニタへアトム的(atomically)に変換する方法と装
置に関するものである。
たすために使用される。スレッドは資源の記憶領域の「スケッチパッド」のよう
なものと考えてもよく、本質的には、コンピュータシステム内における制御の1
つの連続した流れである。一般に、1スレッド、即ち1つの制御のスレッドは、
中央処理装置(CPU)の一連の指示、または、独立して実行され得るプログラ
ム言語の命令文である。各スレッドは、メソッドの起動が存在する固有の実行ス
タックを有する。当業者には周知のように、メソッドがスレッドに対して起動さ
れる場合、起動はスレッドの実行スタック上に「プッシュ」される。そのメソッ
ドが戻ってきた時、または起動されなかった時、起動は実行スタックから「ポッ
プ」される。1メソッドの起動が他のメソッドを起動し得るため、実行スタック
は先入れ後出し方式で動作する。
ジェクトを含む処理を実行しようとするかもしれない。一方、複数のスレッドが
1つのオブジェクトを含む処理を実行しようとするかもしれない。特定のオブジ
ェクトをいずれかの時間に含む複数の処理、即ち同期処理のうちの一つを起動す
ることができるのは、一つのスレッドだけであることがしばしばある。つまり、
唯一のスレッドがある時間に特定のオブジェクトに関する同期処理を実行するこ
とが許可される。同期処理、即ち同期メソッドは以下のことを要求する点でブロ
ック構造である。それは、メソッドを呼び出したスレッドが、メソッドが呼び出
されたオブジェクトと共に、最初の同期を行い、メソッドが戻ってきた場合オブ
ジェクトに対して非同期となる。1スレッドを1オブジェクトと同期する場合、
一般にオブジェクトに対するアクセスの制御を、メソッドを呼び出す前に同期構
造を使用して行うことが要求される。
に関する処理をスレッドに許可することが不適切である期間中において、共有資
源へのアクセスを制御するために使用される。実例として、1以上のスレッドが
任意の特定の時間に1オブジェクトを処理することを防ぐために、オブジェクト
はしばしばロックされる。ロックは、オブジェクトのロックの所有権を有してい
る唯一のスレッドに対して、そのオブジェクトにメソッドを実行することを許可
するように行われる。
場合、スレッドはオブジェクトの同期処理を実行することを許可される。1スレ
ッドが1オブジェクトのロックを有している間、他のスレッドはオブジェクトに
対して付加的な同期処理を実行しようとすることが許可されるかもしれない。ま
た、オブジェクトに対して、非同期処理を実行するかもしれない。スレッド同期
はスレッドによる1プロセスであり、それは、オブジェクトのロックを有してい
る唯一のスレッドがロックされたオブジェクト上で同期処理を実行している間、
オブジェクトがロックされているか否か、オブジェクトの状態をチェックするた
めに相互に影響している。スレッド同期はまたスレッドにオブジェクトロックを
取得させたり取り外したりすることを可能とする。
が、ロックされたオブジェクトに対し処理を許可されたことを確認するために、
同期構造が一般的に提供される。従来の技術においてこのような同期構造の1つ
がモニタとして知られている。典型的に、モニタは、ミューテックのような低レ
ベルの原始的な同期を使用することにより実行される。たとえプログラムがどん
なオブジェクトに対してもモニタ処理を実行できるとしても、一般に全てのオブ
ジェクトに対するモニタの実装を含めることは多くの空間を必要とし非能率的で
ある。このような同期構造がモニタといわれている。一般に、モニタは、1つの
オブジェクトと関連付けられたモニタを有するスレッドだけがそのオブジェクト
に対し同期処理を実行可能とするように構成されている。モニタはライトウェイ
トかヘビーウェイトかのいずれかである。典型的に、ライトウェイトモニタは競
合を条件としないオブジェクトに対して適している。一方、ヘビーウェイトモニ
タは競合モニタ処理を取り扱うために使用されるのが望ましい。
同期」デビッドF.ベーコン他著(1998年)("Thin Locks: Featherweight
Synchronization for Java" by David F. Bacon et al)の258−268ペー
ジで説明されており、これ全体を援用する。説明のように、ライトウェイトモニ
タは、ビットで形成され、それはスレッドIDの形式でどのスレッドがライトウ
ェイトモニタを所有し、関連するオブジェクトをロックしているかを識別するた
めのオブジェクトヘッダを確保する。典型的に、ライトウェイトモニタは競合を
条件としないオブジェクトに使用される。例えば、wait、notify、notifyALLと
いう処理はこれらのオブジェクト上では実行されない。図1Aは、オブジェクト
ヘッダ100及び関連するライトウェイトモニタ102を示す。ライトウェイト
モニタ102はスレッドの識別フィールド104を含み(所有者フィールドとも
いう)、ライトウェイトモニタ102を所有するスレッドのスレッドIDを含ん
でいる。ライトウェイトモニタ102は、再帰カウンタ106も含み、これは、
現在のスレッドがライトウェイトモニタに再エンターした回数を示している。ラ
イトウェイトモニタ102は、ヘビーウェイトモニタフラグが0にセットされた
時に、ライトウェイトモニタ102をライトウェイトモニタとして認識するため
に使用されるヘビーウェイトモニタフラグ108を含む。
は所有されず、アンロックされる。しかしながら、所有者フィールド104が、
ライトウェイトモニタ102を所有する現在のスレッドを表すスレッドIDを含
む場合にはそうではない。
イトモニタ102を含むオブジェクトヘッダ100に対して典型的な比較及びス
ワップ処理を実行する。比較及びスワップ処理において、比較及びスワップオペ
レータの新たな値は、スレッド110と関連付けられたスレッドIDであり、比
較及びスワップオペレータのコンペランド(comperand)はゼロである。この構成
により、仮に比較及びスワップ処理が成功した場合、ライトウェイトモニタ10
2のスレッドID、再帰カウンタ及び全てのフラグ(ヘビーウェイトモニタフラ
グ108など)は、初めから全てゼロであり、それは、ライトウェイトモニタ1
02が所有されておらず、よってアンロックされているということを示す。比較
及びスワップ処理が首尾よく完了した後、所有者フィールド104は、スレッド
110と関連付けられたスレッドIDを含んでいる。このことは、このスレッド
110が、ライトウェイトモニタ102を所有し、ライトウェイトモニタ102
がロックされているということを示すものである。
ある場合)に、再エンターするような場合には、再エンターしているスレッドは
、オーバフローの状態を引き起こすことなく、再帰カウンタ106をまず増分さ
せなければならない。再エンターしているスレッドがオーバフロー状態を引き起
こす場合、この再エンターしているスレッドはライトウェイトモニタ102を、
システムモニタ116上に生成されているヘビーウェイトモニタ114に変換さ
せなければならない。設計により、システムモニタ116の現在の所有者のみが
、ライトウェイトモニタ102をヘビーウェイトモニタ114に変換することが
できることを留意されたい。典型的に、この変換はオブジェクトヘッダ100に
対して、新たに生成されたヘビーウェイトモニタ114に対応するヘビーウェイ
トモニタポインタが比較及びスワップオペレータの新たな値となり、それと共に
比較とスワップ処理が実行されることによって遂行される。このように、比較及
びスワップ処理の成功後、オブジェクトヘッダ100はヘビーウェイトモニタポ
インタを含む。
エンターするたびに毎回更新される再帰カウンタフィールド118を含む。ヘビ
ーウェイトモニタ114はさらに、ヘビーウェイトモニタ所有者フィールド12
0も含む。システムモニタ116は、システムモニタ116の現在の所有者を表
すシステムモニタ所有者フィールド122を含む。システムモニタ116はさら
に、enter、exit、wait、及びnotifyといった特定のスレッドの処理を実行する
ように構成されている。ライトウェイトモニタ102の現在の所有者(即ち、ス
レッド110)は、ライトウェイトモニタ102からヘビーウェイトモニタ11
4へ変換することが可能な唯一のスレッドであり、ヘビーウェイトモニタ114
及び埋め込まれたシステムモニタ116の所有者は同一、即ちスレッド110で
なければならない。
有するライトウェイトモニタ102にエンターしようとしていると仮定する。前
述の通り、スレッド124は比較及びスワップ処理を実行することによりライト
ウェイトモニタ102にエンターしようとする。しかしこの場合、比較及びスワ
ップ処理は失敗となる。その理由は、所有者フィールド104がスレッド110
に対応するスレッドIDを含んでおり、スレッド110がライトウェイトモニタ
102を所有していることを示しているからである。この時点において、スレッ
ド124とスレッド110の間において、ライトウェイトモニタ102の所有権
に対しての競合が生じる。システムモニタ116の所有者としてのスレッド11
0のみが、ライトウェイトモニタ102からヘビーウェイトモニタ114へ変換
することが可能なので、スレッド124はライトウェイトモニタ102がスレッ
ド110により開放されるまでの間、スピンロックループにエンターする。スピ
ンロックループによって、スレッド110がライトウェイトモニタ102をアン
ロックするまでの間、スレッド124は待ち行列にエンターすることを意味する
。従来の技術では公知のように、一般にスピンロックは、システム資源の非能率
的な使用となる部分において望ましくない結果である。スピンロックは、ライト
ウェイトモニタ102が長時間ロックされることにより、ライトウェイトモニタ
102がスピンロックされるまで他のスレッドをwaitさせることを引き起こすと
いう場合において、とりわけ非能率的である。さらに、優先度の高いスレッドと
低いスレッドが共にライトウェイトモニタ102に関してスピンロックされるよ
うな状況において、優先度の低いスレッドが「待ちわびた(starving)」状態とな
る可能性がある。
の競合を解決するための効果的な方法および装置である。
を効率的にヘビーウェイトモニタへ変換するための改良された方法、装置、およ
びコンピュータシステムに関する。発明の一側面によると、第2のスレッドによ
って所有されるオブジェクトに関して同期処理を実行するための第1のスレッド
に対して、第1のスレッドは新たなヘビーウェイトモニタを生成し、第2のスレ
ッドを新たに生成されたヘビーウェイトモニタの所有者に設定する。そして、第
1のスレッドはヘビーウェイトモニタにエンターする。こうすれば、第2のスレ
ッドがオブジェクトをアンロックするまで、第1のスレッドがスピンロックを行
う必要がない。
施され得る。本発明のいくつかの実施の形態が以下に説明される。方法および装
置が開示されている。本発明の一側面によれば、第2のスレッドによって所有さ
れるオブジェクトが第1のスレッドに対して利用不能であるときに、ライトウェ
イトモニタをヘビーウェイトモニタへ変換するためのコンピュータで実行される
方法は、ライトウェイトモニタに関連付けられたオブジェクトの所有権を決定す
る工程を含む。仮に第2のスレッドが該当オブジェクトを所有することが判断さ
れた場合、第1のスレッドは新たにヘビーウェイトモニタを生成する。そして、
第1のスレッドは、第2のスレッドを新たに生成されたヘビーウェイトモニタの
所有者として設定する。次に、第1のスレッドは新たなヘビーウェイトモニタに
エンターする。
のスレッドを含む。また、コンピュータシステムは、メモリに結合されたプロセ
ッサ、およびオブジェクトヘッダを含むオブジェクトを含み、同オブジェクトヘ
ッダはオブジェクトの所有権に関連する情報を含むライトウェイトモニタを含む
ように構成される。第1のスレッドIDによって指示されたようにオブジェクト
をロックしていた、複数のスレッドから選択された第1のスレッドは、ライトウ
ェイトモニタに含まれ、複数のスレッドから選択された第2のスレッドは、オブ
ジェクトが第2のスレッドに対して利用可能である場合、ライトウェイトモニタ
を対応する第1のスレッドによって所有されたヘビーウェイトモニタに変換する
ように構成されている。
ダを有するオブジェクトに関する同期処理の実行を第1のスレッドが試行する場
合、ライトウェイトモニタをヘビーウェイトモニタに変換するコンピュータプロ
グラム製品が開示されている。
第2のスレッドによってオブジェクトが所有されていると判断される場合にヘビ
ーウェイトモニタを生成し、ヘビーウェイトモニタを第2のスレッドに設定する
とともに、第1のスレッドをヘビーウェイトモニタにエンターさせるコンピュー
タコードと、同コンピュータコードを格納するためのコンピュータ読み取り可能
な記録媒体とを含む。
ることにより明らかになるであろう。
、2以上のスレッドが任意の特定時間に1つのオブジェクトに関する処理を行う
ことを防止することができるように、オブジェクトは同期構造を備える。
るシステムが意図されている。第2のスレッドによって既に所有されているライ
トウェイトモニタへ第1のスレッドがエンターしようとする場合、第1のスレッ
ドはヘビーウェイトモニタを生成し、第2のスレッドをその新たに生成されたヘ
ビーウェイトモニタの所有者として設定する。その後、第1のスレッドは新たに
生成されたヘビーウェイトモニタにエンターする。このように、第1のスレッド
は、第2のスレッドがライトウェイトモニタを開放するまでwaitすることはない
。
権を得るプロセス200を詳しく図示したフローチャートである。プロセス20
0は、オブジェクトが現在所有されているか否かの判断によって202から開始
する。実施例において、オブジェクトヘッダは、所有者フィールドを有するライ
トウェイトモニタおよびヘビーウェイトモニタフラグを含む。所有者フィールド
がゼロであれば、該オブジェクトは非所有であり、それ以外ではオブジェクトは
、スレッドによって所有される。そのスレッドのスレッドIDは、所有者フィー
ルドに格納されている。仮に、オブジェクトが所有されていないと判断された場
合、204において、要求しているスレッドは、当該オブジェクトに関連付けら
れたライトウェイトモニタの所有者フィールドに自身のスレッドIDを入力する
ことによりオブジェクトの所有権を得る。
場合、オブジェクトヘッダの内容が206において評価される。オブジェクトヘ
ッダが、第1のスレッドのスレッドIDを所有者フィールドに格納するライトウ
ェイトモニタを含む場合には、第1のスレッドが当該オブジェクトに関連付けら
れたライトウェイトモニタを現在所有している。この場合、第1のスレッドはリ
エントラントとして参照される。リエントラントであることによるオブジェクト
の現在の所有者としての意味は、第1のスレッドがオブジェクトに関連付けられ
たライトウェイトモニタに再エンターを試行することである。そのような状況は
、例えば、スレッドがオブジェクトを開放し、いくらか時間が経過した後に、関
連するライトウェイトモニタに再エンターすることによりオブジェクトを再取得
する際に生じる。一旦、第1のスレッドが現在のスレッドであると判断されれば
、208において、第1のスレッドはライトウェイトモニタに含まれる再帰カウ
ンタを増分することによりライトウェイトモニタに再エンターする。
に対応するヘビーウェイトモニタポインタを含む場合、210において第1のス
レッドは対応するヘビーウェイトモニタにエンターする。
なる第2のスレッドに対応するスレッドIDを含む場合、ライトウェイトモニタ
は第2のスレッドによって所有されている。この状況では、当該オブジェクトの
所有権に関して、第1のスレッドと第2のスレッドとの間には競合が存在する。
本発明の実施の形態では、上記2つのスレッド間の競合を解決するために、第1
のスレッドは新たなヘビーウェイトモニタを生成し、212において、新たに生
成されたヘビーウェイトモニタの所有者を第2のスレッドに設定する。このよう
に、210において、第2のスレッドが当該オブジェクトに関連付けられたライ
トウェイトモニタを開放するまでwaitすることなく、第1のスレッドは新たに生
成されたヘビーウェイトモニタにエンターすることができる。この方法では、オ
ブジェクトの所有権に関する第1のスレッドおよび第2のスレッド間の競合は、
例えば、ライトウェイトモニタが開放されるまで第1のスレッドをスピンロック
する必要なく解決される。
第1のスレッドは新たに生成されたヘビーウェイトモニタに埋め込まれたシステ
ムモニタをまず所有しなければならないことに留意されたい。しかしながら、ラ
イトウェイトモニタからヘビーウェイトモニタへの変換を行うスレッドは、ライ
トウェイトモニタの所有者である必要がないため、新たに生成されたヘビーウェ
イトモニタの所有権を第2のスレッドに設定することによって、衝突が起こる可
能性が生じる。例として、仮に第1のスレッドがライトウェイトモニタを第2の
スレッドによって所有されるヘビーウェイトモニタに変換する場合、システムモ
ニタは第1のスレッドによって所有され、ヘビーウェイトモニタは第2のスレッ
ドによって所有される。この衝突は、212において新たに生成されるヘビーウ
ェイトモニタに含まれるリーエンホルダ(lienholder)フィールドおよびリーエン
ホルダ再帰フィールドの導入によって解決される。実施例において、リーエンフ
ィールドは、ヘビーウェイトモニタへと変換されたライトウェイトモニタの所有
者として第2のスレッドを認識する。
る。ヘビーウェイトモニタ300は、システムモニタ所有者フィールド304を
含むシステムモニタ302上に構築される。ヘビーウェイトモニタは、所有者フ
ィールド306および再帰カウンタフィールド308を含む。実施例において、
ヘビーウェイトモニタ200は、またリーエンフィルダ310およびリーエンフ
ィルダ再帰フィールド312を含む。リーエンフィルダフィールド310および
はリーエンフィルダ再帰フィールド312は、ヘビーウェイトモニタから変換さ
れたライトウェイトモニタの所有者および再帰カウントを一時的に保持するため
に使用される。
て生成された場合のヘビーウェイトモニタ300を図示する。第1のスレッドが
システムモニタ302を所有するため、システムモニタ所有者フィールド304
は、第1のスレッドのスレッドIDを含む。一方、第2のスレッドのスレッドI
Dは、ヘビーウェイトモニタ所有者フィールド306に格納される。第2のスレ
ッドがヘビーウェイトモニタ300から生成されたライトウェイトモニタを所有
していたため、ヘビーウェイトモニタ300の真の所有者は第2のスレッドであ
り、第1のスレッドではない。好ましい実施の形態では、リーエンフィールド3
10は、第2のスレッドのスレッドIDを含み、それによりヘビーウェイトモニ
タ300の真の所有者の識別情報を保存する。
有権を得るプロセス400である。プロセス400は、プロセス200のとり得
る実施の形態のほんの一例にすぎず、402において、オブジェクトが所有され
ているかを第1のスレッドによって判断することによって開始することに留意さ
れたい。実施例において、オブジェクトの所有権は、オブジェクトヘッダに含ま
れるライトウェイトモニタに対してアトム的比較およびスワップ処理を実行する
ことによって判断される。上述したように、アトム的比較およびスワップ処理は
、コンペランド(comperand)値が「0」を示すため、成功した比較およびスワッ
プ処理ではオブジェクトが非所有であり、ライトウェイトモニタ内の全てのデー
タフィールドが「0」を示す。
された場合、オブジェクトは非所有であったことになり、現在は第1のスレッド
によって所有されていることになる。しかしながら、アトム的比較およびスワッ
プ処理が成功しなかったと判断された場合、ライトウェイトモニタの少なくとも
1つのフィールドはゼロではなかったことになる。この場合、406において、
比較およびスワップ処理が失敗した理由を判断するためにオブジェクトヘッダの
評価が行われる。
ライトウェイトモニタを含む場合、第1のスレッドがライトウェイトモニタの現
在の所有者であり、それにより第1のスレッドはリエントラントであると考慮さ
れる。この場合、408における判断は、ライトウェイトモニタに含まれる再帰
カウンタの増分がオーバーフロー状態を招く結果となるか否かによってなされる
。再帰カウンタの増分がオーバーフロー状態を招く結果とならない場合、410
において、ライトウェイトモニタの再帰カウンタは適切に増分される。一旦、増
分カウンタが適切に増分された場合、一実施の形態において、412において、
第1のスレッドは、増分された再帰カウンタのアトム的比較およびスワップをオ
ブジェクトヘッダに対して実行することによってライトウェイトモニタに再エン
ターする。
合、414において、第1のスレッドは新たなヘビーウェイトモニタを生成する
。
スレッドによって所有されているライトウェイトモニタを含む場合、414にお
いて、第1のスレッドは新たなヘビーウェイトモニタを生成する。416におい
て、リーエンホルダは、現在のライトウェイトモニタの所有者(例えば、第2の
スレッド)に設定され、リーエンホルダ再帰カウンタは現在の再帰カウンタに設
定される。そして、418において、アトム的比較およびスワップ処理が実行さ
れる。この方法によれば、新たに生成されたヘビーウェイトモニタに対応するヘ
ビーウェイトモニタポインタはオブジェクトヘッダに挿入される。仮に、420
において、アトム的比較およびスワップ処理が成功ではないと判断された場合、
新たに生成されたヘビーウェイトモニタは422において削除され、新たなヘビ
ーウェイトモニタが414において生成される。アトム的比較およびスワップ処
理は、例えば、アトム的比較およびスワップ処理が行われる前に、第3のスレッ
ドがヘビーウェイトモニタの所有権を取得した場合に失敗することがある。
いて、第1のスレッドは、オブジェクトヘッダ内に含まれるヘビーウェイトモニ
タポインタに対応するヘビーウェイトモニタに埋め込まれたシステムモニタにエ
ンターする。この時点で、第1のスレッドは、オブジェクトヘッダ内に含まれた
ヘビーウェイトモニタポインタに対応するヘビーウェイトモニタに埋め込まれた
システムモニタへのエンターを果たす。しかしながら、今、システムモニタ所有
者およびヘビーウェイトモニタ所有者が1つで、かつ同一であることを確かにす
る必要がある。
ニタにエンターするプロセス500を詳しく図示したフローチャートである。プ
ロセス500は、プロセス400の424へエンターする一実施の形態であるこ
とに留意されたい。より詳しくは、プロセス500は、リーエンホルダが存在す
るか否かの判断がなされる502において開始する。一実施の形態において、リ
ーエンホルダが存在するか否かの判断は、リーエンホルダフィールドが非ゼロの
値を含むかどうかの判断によって遂行される。リーエンホルダフィールドが「0
」である場合、リーエンホルダは存在せず、それ以外の場合にはリーエンホルダ
は、リーエンホルダフィールドに含まれるスレッドIDによって示されるスレッ
ドである。リーエンホルダが存在しない場合(例えば、リーエンホルダフィール
ドがゼロである)、ヘビーウェイトモニタの所有者フィールドは現在のスレッド
IDに設定され、ヘビーウェイト再帰カウンタは、504において1だけ増分さ
れた現在の再帰カウンタに設定される。再帰カウンタは、システムモニタへのエ
ンターを補償するために増分される。
、506において、リーエンホルダが現在のスレッドであるか否かの判断がなさ
れる。一実施の形態において、リーエンホルダの識別は、リーエンホルダフィー
ルドの内容を読むこと、および同フィールドに含まれるスレッドIDを判断する
ことによて遂行される。仮に、現在のスレッドがリーエンホルダスレッドではな
い場合、508において、システムwaitを呼び出すことにより、リーエンホルダ
スレッドに対してモニタ所有者を譲らなければならない。リーエンホルダスレッ
ドがモニタ所有者を取り戻した後、現在のスレッドはリーエンホルダスレッドに
よって立ち上げられることになる。
510において、ヘビーウェイトモニタが更新される。一実施の形態において、
ヘビーウェイトモニタは現在のリーエンホルダフィールドを「0」に再設定する
ことによって更新される。また、ヘビーウェイトモニタの更新は、ヘビーウェイ
トモニタの所有者フィールドを現在のスレッドに対応するスレッドIDに設定す
ることを含む。実施例において、リーエンホルダ再帰フィールドは、現在のモニ
タエンター処理を考慮して1だけ増分される。そして、増分されたリーエンホル
ダ再帰フィールドがゼロにリセットされた後に、ヘビーウェイトモニタ再帰フィ
ールドは、リーエンホルダフィールドの増分された値に設定される。ヘビーウェ
イトモニタが更新された後、512において、システムモニタはnotifyALLを広
める。notifyALLは、508において、待ち行列に含まれるスレッドを立ち上げ
る。そして、それらスレッドは、502へ戻ることによって更なる処理のために
行列にwaitする。
の他のモニタ機能の関係600を図示する。実施例において、所有者確認機能6
02は、現在のスレッドがヘビーウェイトモニタを所有することを確実とする。
仮に、所有者確認機能602が、現在のスレッドがヘビーウェイトモニタを所有
していないと判断した場合、エラーメッセージが呼び出され、それ以外の場合に
は、所有者確認機能は成功し、制御が選択されたモニタ機能へ渡される。そのよ
うなモニタ機能は、604におけるwait、606におけるexit、そして608に
おけるnotify(または、notifyALL)を含む。
したフローチャートである。所有者確認機能700は、所有者確認機能602の
とり得る実施の形態の一例にすぎないことに留意されたい。より詳しくは、所有
者確認機能700は、現在のスレッドがヘビーウェイトモニタを所有するかを判
断することによって702から開始する。現在のスレッドがヘビーウェイトモニ
タを所有している場合、ヘビーウェイトモニタ所有者が確かめられる。しかしな
がら、現在のスレッドがヘビーウェイトモニタを所有していない場合、704に
おいて、現在のスレッドがリーエンホルダであるかが判断される。仮に、現在の
スレッドがリーエンホルダではない場合、エラーメッセージが渡され、それ以外
の場合には、706においてスレッドがヘビーウェイトモニタにエンターする。
一実施の形態において、706へのエンターは、424へのエンターとして実施
されていることに留意されたい。一旦、現在のスレッドが首尾よくヘビーウェイ
トモニタにエンターした場合、再帰カウンタが706へのエンターを考慮して減
少される。この時点において、ヘビーウェイトモニタの所有権は確かめられる。
フローチャートである。モニタwait処理800は、モニタwait処理604のとり
得る実施の形態の一例である。モニタwait処理800は、602における所有者
確認機能が成功した後にのみ開始することに留意されたい。より詳しくは、モニ
タwait処理800は、現在の所有者および再帰カウントを保存することによって
802から開始する。一旦、保存されると、804において、所有者および再帰
カウントはゼロに設定され、モニタを非所有に設定する。一旦、モニタが非所有
となると、806において、ヘビーウェイトモニタを開放するシステムモニタwa
itが呼ばれる。一旦、システムモニタwaitが、notifyまたはnotifyALLの発行に
よって完了すると、例えば、808において、現在のヘビーウェイトモニタの所
有者の認識情報が再設定される。一実施の形態において、認識情報は、802に
おいて保存された現在の所有者および現在の再帰を検索し、ヘビーウェイトモニ
タの現在の所有者フィールドおよび現在の再帰フィールドのそれぞれに入力する
ことによって再設定される。
チャートである。exit機能900は、exit機能606のとり得る実施の形態の一
例であることに留意されたい。より詳しくは、exit機能900は、現在のスレッ
ドがヘビーウェイトモニタの所有者であるかを判断することによって902から
開始する。仮に、現在のスレッドがヘビーウェイトモニタの所有者である場合、
904において、再帰レベルが1であると判断される。仮に、再帰レベルが1で
ある場合、所有者フィールドは「0」に設定され、再帰カウントは「0」に設定
され、そして906において、システムモニタはexitする。しかしながら、仮に
、904において、再帰カウントが「1」ではなかったと判断された場合、90
8において、再帰カウンタは減少され、システムモニタはexitする。何れの場合
においても、exit機能は首尾よく行われる。
い場合、910において、現在のヘビーウェイトモニタ所有者がリーエンホルダ
であるかの判断が行われる。そうではない場合、エラーメッセージが呼ばれる。
一実施の形態において、容認し難いが対応するエンター処理がないままにexitが
呼ばれる。しかしながら、仮に、現在のヘビーウェイトモニタ所有者がリーエン
ホルダである場合、912において、リーエンホルダスレッドはヘビーウェイト
モニタにエンターする。実施例において、912におけるエンターは、414に
おけるエンターとして実施されている。一旦、リーエンホルダスレッドが首尾よ
くヘビーウェイトモニタにエンターすると、再帰カウンタは、912におけるエ
ンターを補償するために減少される。この時点において、exit機能は首尾よく行
われる。
000を詳しく図示したフローチャートである。notify(または、notifyALL)
機能1000は、notify(または、notifyALL)機能608のとり得る実施の形
態の一例である。notify(または、notifyALL)機能1000は、602におけ
る所有者確認機能が首尾よく行われた後のみに開始する。より詳しくは、notify
(または、notifyALL)機能1000は、システムモニタ上のnotify(または、n
otifyALL)を呼び出して1002から開始する。
1100を図示する。コンピュータシステム1100は、主記憶装置1104(
一般に、読み出し専用メモリ、即ちROM)、または主記憶装置1106(一般
に、ランダムアクセスメモリ、即ちRAM)を含む記憶装置に結合された任意の
数のプロセッサ1102(また中央処理装置として参照される、即ちCPU)を
含む。
によって認識されるように、仮想マシンをサポートするように構成されてもよい
。コンピュータシステム1100でサポートされる仮想マシンの一例を、図7を
参照して以下に説明する。当業者に公知のように、ROMは一般にデータおよび
命令を単方向にてCPU1102へ転送するように動作するのに対して、RAM
は一般にデータおよび命令を双方向にて転送するために使用される。主記憶装置
1104,1106の双方は、任意の好適なコンピュータ読み出し可能な記録媒
体を含んでもよい。一般に、大容量の装置である補助記憶媒体1108もまたC
PU1102と双方向で結合され、付加的なデータ記憶容量を提供する。大容量
記憶装置1108は、コンピュータコード、データなどを含むプログラムを格納
するために使用されてもよい。一般に、大容量記憶装置1108は、主記憶装置
1104,1106よりも一般に低速なハードディスク、またはテープのような
記憶媒体である。大容量記憶装置1108は、磁気または紙テープリーダあるい
は何らかの公知の装置の形態をとってもよい。大容量記憶装置1108に格納さ
れる情報は、適切な場合において、仮想メモリとしてRAM1106の一部とす
るような標準的な方法にて組み込まれてもよい。CD−ROMのような具体的な
主記憶装置1104もまた、単方向にてCPU1102へデータを渡す。 また、CPU1102は、限定されるわけではないが、ビデオモニタ、トラッ
クボール、マウス、キーボード、マイクロホン、タッチディスプレイ、変換カー
ド読取装置、磁気または紙テープ読取装置、タブレット、スタイラス、音声また
は手書き文字認識装置、あるいはコンピュータのような他の公知の入力装置など
の装置を含む1つ以上の入出力装置1110に結合されてもよい。最後に、CP
U1102は、コンピュータまたは遠距離通信ネットワーク、例えば、インター
ネットネットワークまたはイントラネットネットワークに1112に一般的に図
示されるネットワーク接続を用いて選択的に結合されてもよい。そのようなネッ
トワーク接続により、上述した方法の工程を実行する過程で、CPU1102は
ネットワークから情報を受信したり、あるいはネットワークへ情報を送信するよ
うに意図されている。CPU1102を用いて実行される連続した命令としてし
ばしば表されるそのような情報は、例えば、搬送波に埋め込まれるコンピュータ
データ信号の形態で、ネットワークから受信したり、ネットワークへ送信される
。上述した装置および用具は、コンピュータハードウェアおよびソフトウェア分
野の当業者にとって周知であろう。
び範囲を逸脱することなく、本発明は他の多くの具体的な形態に実施され得るこ
とを理解されたい。例として、オブジェクトのロックおよびアンロックに関する
工程が再整理されてもよい。また、本発明の精神および範囲を逸脱することなく
、工程が削除または追加されてもよい。
は、Java(登録商標)をベースとする環境に関して実施することが特に好適であ
るが、本方法は、一般にオブジェクトをベースとする任意の環境に適用されても
よい。特に、本方法はプラットフォームに依存しないオブジェクトベースの環境
において使用することが好適である。また、本方法は、なんらかの分散型オブジ
ェクト指向システムにおいて実施されてもよいことを認識されたい。
るかを識別するビットとして説明された。一般に、モニタに関するビット数は広
範に変更されることを留意されたい。加えて、オブジェクトの状態はモニタ以外
の機構を用いて識別されてもよいことを認識されたい。例として、オブジェクト
は、オブジェクトの状態を識別するリストへのポインターを含んでもよい。
て説明されたが、一般に、本発明は任意の好適なオブジェクト指向コンピュータ
システムに実施されてもよいことを認識されたい。具体的には、本発明に従うオ
ブジェクトのロック、非ロックの方法は、一般に、本発明の精神および範囲を逸
脱することなく、任意のマルチスレッドのオブジェクト指向システムに実施され
てもよい。従って、これらの例は、限定的ではなく例示的なものとして考慮され
るものであり、本発明はここで説明した詳細に限定されるものではなく、添付の
請求の範囲の均等物の全範囲内において改変されてもよい。
ある。
セスを詳述したフローチャートである。
。
ニタを示した図である。
ートである。
モニタ機能との関係を示した図である。
チャートである。
チャートである。
。
ーチャートである。
示した図である。
Claims (17)
- 【請求項1】 マルチスレッドコンピュータにおいて、コンピュータが実行
するライトウェイトモニタからヘビーウェイトモニタへの変換方法であって、 第2のスレッドによって所有されるライトウェイトモニタの所有権に対し第1
のスレッドが競合するとき、前記第1のスレッドがヘビーウェイトモニタを生成
する工程と、 前記ヘビーウェイトモニタの所有者として前記第2のスレッドを指名する工程
と、 前記第1のスレッドが前記ヘビーウェイトモニタにエンターする工程とを備え
る方法。 - 【請求項2】 請求項1に記載の方法であって、所有権を決定する工程は、 前記第1のスレッドおよびオブジェクトヘッダ間のアトム的比較およびスワッ
プ処理を実行する工程と、 前記比較およびスワップ処理が成功したかを判断する工程とを更に含む方法。 - 【請求項3】 請求項2に記載の方法であって、前記処理が成功しなかった
と判断されたとき、その後に前記オブジェクトヘッダの内容を判断する方法。 - 【請求項4】 請求項3に記載の方法であって、前記オブジェクトヘッダが
前記第2のスレッドに対応する第2のスレッドIDを含むと判断されるとき、そ
の後に新たなヘビーウェイトモニタを生成し、前記第2のスレッドを該新たなヘ
ビーウェイトモニタの所有者に設定する方法。 - 【請求項5】 請求項4に記載の方法であって、前記新たなヘビーウェイト
モニタを設定する工程は、 前記オブジェクトヘッダと、前記新たに生成されたヘビーウェイトモニタに関
連付けられたヘビーウェイトモニタポインタとの間のアトム的比較およびスワッ
プ処理を実行する工程を更に含む。 - 【請求項6】 請求項3に記載の方法であって、前記オブジェクトヘッダが
ヘビーウェイトモニタポインタを含むと判断されるとき、 前記第1のスレッドが、前記オブジェクトヘッダに含まれるヘビーウェイトポ
インタに対応するヘビーウェイトモニタにエンターする方法。 - 【請求項7】 請求項3に記載の方法であって、前記オブジェクトヘッダが
前記第1のスレッドに対応する第1のスレッドIDを含むと判断されるとき、 前記ライトウェイトモニタに含まれる再帰カウンタの増分がオーバーフロー状
態を招くかを判断する方法。 - 【請求項8】 請求項7に記載の方法であって、前記再帰カウンタの増分が
オーバーフロー状態を招かないと判断されるとき、 m)第1のスレッドが前記ライトウェイトモニタに再エンターする方法。 - 【請求項9】 請求項7に記載の方法であって、前記再帰カウンタの増分が
オーバーフロー状態を招くと判断されるとき、 n)ライトウェイトモニタを、対応するヘビーウェイトモニタへ変換させる方
法。 - 【請求項10】 第1のスレッドがライトウェイトモニタに関連付けられた
オブジェクトであって、前記ライトウェイトモニタを含むオブジェクトヘッダを
有するオブジェクトに関する同期処理を実行しようとするときに、ライトウェイ
トモニタをヘビーウェイトモニタへ変換するためのコンピュータプログラム製品
において、 前記オブジェクトの所有権を決定するコンピュータコードと、 前記オブジェクトが第2のスレッドによって所有されていることが判断される
とき、ヘビーウェイトモニタを生成するコンピュータコードと、 前記ヘビーウェイトモニタの所有権を前記第2のスレッドに設定するコンピュ
ータコードと、 前記第1のスレッドを前記ヘビーウェイトモニタへエンターさせるコンピュー
タコードと、 前記コンピュータコードを格納するコンピュータ読み取り可能な媒体とを備え
るコンピュータプログラム製品。 - 【請求項11】 請求項10に記載のコンピュータプログラム製品であって
、コンピュータ読み取り可能な媒体は、搬送波に埋め込まれたデータ信号である
コンピュータプログラム製品。 - 【請求項12】 請求項10に記載のコンピュータプログラム製品は、前記
第1のスレッドおよびオブジェクトヘッダ間のアトム的比較およびスワップ処理
を実行するとともに、前記比較およびスワップ処理が成功したかを判断するコン
ピュータコードを更に含む。 - 【請求項13】 請求項12に記載のコンピュータプログラム製品であって
、前記比較およびスワップ処理が成功した場合、コンピュータコードは前記オブ
ジェクトヘッダの内容を判断するコンピュータプログラム製品。 - 【請求項14】 請求項13に記載のコンピュータプログラム製品であって
、前記オブジェクトヘッダが、前記第2のスレッドに対応する第2のスレッドI
Dを含むと判断されるとき、 コンピュータコードは、 新たにヘビーウェイトモニタを生成し、 前記第2のスレッドを該新たなヘビーウェイトモニタの所有者に設定し、 前記オブジェクトヘッダと、前記新たなヘビーウェイトモニタに関連付けられ
たヘビーウェイトモニタポインタとの間のアトム的比較およびスワップ処理を実
行するコンピュータプログラム製品。 - 【請求項15】 複数のスレッドを含むメモリを有するコンピュータシステ
ムであって、複数のスレッドの各々、前記コンピュータシステムは、 前記メモリに接続されたプロセッサを備え、 オブジェクトヘッダを含むオブジェクトを備え、該オブジェクトヘッダは、オ
ブジェクトの所有権に関する情報を含むライトウェイトモニタを含むように構成
され、 複数のスレッドから選択された第1のスレッドを備え、該第1のスレッドは、
前記ライトウェイトモニタに含まれる第1のスレッドIDによって示されるオブ
ジェクトをロックし、 複数のスレッドから選択された第2のスレッドとを備え、前記オブジェクトが
前記第2のスレッドに対して利用不能であるとき、前記第2のスレッドは、前記
ライトウェイトモニタを前記第1のスレッドによって所有される対応するヘビー
ウェイトモニタへ変換するコンピュータシステム。 - 【請求項16】 請求項15に記載のコンピュータシステムであって、前記
ライトウェイトモニタは、前記オブジェクトが再エンターした回数を表す再帰カ
ウンタを含むコンピュータシステム。 - 【請求項17】 請求項16に記載のコンピュータシステムであって、オブ
ジェクトヘッダは、前記オブジェクトに関連付けられたヘビーウェイトモニタを
示すヘビーウェイトモニタポインタを含むコンピュータシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12195799P | 1999-02-25 | 1999-02-25 | |
US60/121,957 | 1999-02-25 | ||
US09/511,644 US6691304B1 (en) | 1999-02-25 | 2000-02-22 | Monitor conversion in a multi-threaded computer system |
US09/511,644 | 2000-02-22 | ||
PCT/US2000/004882 WO2000050993A2 (en) | 1999-02-25 | 2000-02-24 | Monitor conversion in a multi-threaded computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003536118A true JP2003536118A (ja) | 2003-12-02 |
JP4620871B2 JP4620871B2 (ja) | 2011-01-26 |
Family
ID=26820007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000601526A Expired - Lifetime JP4620871B2 (ja) | 1999-02-25 | 2000-02-24 | マルチスレッドコンピュータシステムにおけるモニタ変換 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6691304B1 (ja) |
EP (1) | EP1163581B1 (ja) |
JP (1) | JP4620871B2 (ja) |
AU (1) | AU3606900A (ja) |
DE (1) | DE60000925T2 (ja) |
WO (1) | WO2000050993A2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
US6892200B2 (en) * | 2001-11-13 | 2005-05-10 | America Online, Incorporated | Javascript engine |
US20030145035A1 (en) * | 2002-01-15 | 2003-07-31 | De Bonet Jeremy S. | Method and system of protecting shared resources across multiple threads |
US20040006583A1 (en) * | 2002-06-26 | 2004-01-08 | Nicholas Shaylor | Method and apparatus for converting a synchronized method into a non-synchronized method |
US6988099B2 (en) * | 2002-06-27 | 2006-01-17 | Bea Systems, Inc. | Systems and methods for maintaining transactional persistence |
US7051026B2 (en) * | 2002-07-31 | 2006-05-23 | International Business Machines Corporation | System and method for monitoring software locks |
JP3864250B2 (ja) | 2002-10-31 | 2006-12-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 排他制御装置、排他制御方法、プログラム、及び記録媒体 |
US7509429B2 (en) * | 2004-05-28 | 2009-03-24 | Sap Ag | Message endpoint activation |
US20050289212A1 (en) * | 2004-06-01 | 2005-12-29 | Tankov Nikolal D | Non-transactional resource reference |
US7594237B2 (en) * | 2004-06-01 | 2009-09-22 | Sap Ag | Program object to support connection generation |
US9582313B2 (en) * | 2004-06-03 | 2017-02-28 | Sap Se | Connection resource system |
US7676810B2 (en) * | 2004-06-03 | 2010-03-09 | Sap Ag | Identification of execution context |
US7657658B2 (en) * | 2004-06-07 | 2010-02-02 | Sap Ag | Resource adapter deployment |
US7617497B1 (en) * | 2004-08-30 | 2009-11-10 | Sun Microsystems, Inc. | Method and system for creating and using storage threads |
US8095921B2 (en) | 2005-10-12 | 2012-01-10 | International Business Machines Corporation | Identifying code that wastes time switching tasks |
US7886300B1 (en) | 2006-09-26 | 2011-02-08 | Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. | Mechanism for implementing thread synchronization in a priority-correct, low-memory safe manner |
US8627292B2 (en) * | 2009-02-13 | 2014-01-07 | Microsoft Corporation | STM with global version overflow handling |
US9280444B2 (en) | 2010-10-11 | 2016-03-08 | Sap Se | System and method for identifying contention of shared resources in a runtime system |
US9141439B2 (en) * | 2010-10-11 | 2015-09-22 | Sap Se | System and method for reporting a synchronization event in a runtime system of a computer system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04343143A (ja) * | 1991-05-20 | 1992-11-30 | Nippon Telegr & Teleph Corp <Ntt> | マルチプロセッサシステムにおける共有資源相互排除方式 |
JPH05225149A (ja) * | 1992-02-13 | 1993-09-03 | Toshiba Corp | ロック方式 |
JPH09223032A (ja) * | 1996-02-19 | 1997-08-26 | Fujitsu Ltd | 資源ロック制御機構 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761670A (en) * | 1995-12-08 | 1998-06-02 | Sun Microsystems, Inc. | System and method for space efficient object locking using global and local locks |
EP0863462B8 (en) * | 1997-03-04 | 2010-07-28 | Panasonic Corporation | Processor capable of efficiently executing many asynchronous event tasks |
US6247025B1 (en) * | 1997-07-17 | 2001-06-12 | International Business Machines Corporation | Locking and unlocking mechanism for controlling concurrent access to objects |
CA2222389A1 (en) * | 1997-11-27 | 1999-05-27 | Ibm Canada Limited-Ibm Canada Limitee | A mechanism for managing the locking and unlocking of objects in java |
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
-
2000
- 2000-02-22 US US09/511,644 patent/US6691304B1/en not_active Expired - Lifetime
- 2000-02-24 DE DE60000925T patent/DE60000925T2/de not_active Expired - Lifetime
- 2000-02-24 AU AU36069/00A patent/AU3606900A/en not_active Abandoned
- 2000-02-24 WO PCT/US2000/004882 patent/WO2000050993A2/en active IP Right Grant
- 2000-02-24 EP EP00914715A patent/EP1163581B1/en not_active Expired - Lifetime
- 2000-02-24 JP JP2000601526A patent/JP4620871B2/ja not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04343143A (ja) * | 1991-05-20 | 1992-11-30 | Nippon Telegr & Teleph Corp <Ntt> | マルチプロセッサシステムにおける共有資源相互排除方式 |
JPH05225149A (ja) * | 1992-02-13 | 1993-09-03 | Toshiba Corp | ロック方式 |
JPH09223032A (ja) * | 1996-02-19 | 1997-08-26 | Fujitsu Ltd | 資源ロック制御機構 |
Non-Patent Citations (1)
Title |
---|
JPN6009041424, David F. Bacon et al., "Thin Locks: Featherweight Synchronization for Java", Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, 1998, pp.258−268 * |
Also Published As
Publication number | Publication date |
---|---|
WO2000050993A3 (en) | 2000-12-21 |
DE60000925T2 (de) | 2003-05-28 |
WO2000050993A2 (en) | 2000-08-31 |
EP1163581A2 (en) | 2001-12-19 |
AU3606900A (en) | 2000-09-14 |
DE60000925D1 (de) | 2003-01-16 |
JP4620871B2 (ja) | 2011-01-26 |
US6691304B1 (en) | 2004-02-10 |
EP1163581B1 (en) | 2002-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003536118A (ja) | マルチスレッドコンピュータシステムにおけるモニタ変換 | |
US10353749B2 (en) | Lock-free dual queue with condition synchronization and time-outs | |
US7194495B2 (en) | Non-blocking memory management mechanism for supporting dynamic-sized data structures | |
EP0946913B1 (en) | Thread-local synchronization construct cache | |
JP3953130B2 (ja) | スペース効率の良いオブジェクト・ロッキング・システム及び方法 | |
EP1751659B1 (en) | Thread synchronization methods and apparatus for managed run-time environments | |
US5450592A (en) | Shared resource control using a deferred operations list | |
US6546443B1 (en) | Concurrency-safe reader-writer lock with time out support | |
US5968157A (en) | Locking of computer resources | |
WO1998044401A2 (en) | Thread-local synchronization construct cache | |
JPH1131081A (ja) | オブジェクトベースシステムにおけるスレッド同期を行う方法およびコンピュータシステム、並びに、そのためのコンピュータプログラム製品 | |
US20030140085A1 (en) | Single-word lock-free reference counting | |
JPH11327931A (ja) | セマフォ操作を実行する方法及び装置 | |
US6345313B1 (en) | Recovery of synchronization constructs | |
US6473820B1 (en) | Method and apparatus for user level monitor implementation | |
US6587955B1 (en) | Real time synchronization in multi-threaded computer systems | |
EP1435572A2 (en) | Method and apparatus for providing dynamic locks for resources | |
WO2004066148A1 (en) | Method and apparatus for managing resource contention in a multisystem cluster | |
WO2000033195A9 (en) | Elimination of traps and atomicity in thread synchronization | |
EP1104900A2 (en) | Method and apparatus for selecting a locking policy based on a per-object locking history | |
US6754898B2 (en) | Method and apparatus for converting a lightweight monitor to a heavyweight monitor | |
EP0954780B1 (en) | Locking of computer resources | |
Züpke | Deterministic fast user space synchronization | |
JPH03257568A (ja) | 共有資源排他制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090818 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091117 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091125 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100316 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100614 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100621 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100909 |
|
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: 20101005 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101029 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131105 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4620871 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100216 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131105 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131105 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
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 |