JPH1049384A - マルチスレッド環境内でオブジェクトを処分する方法および装置 - Google Patents

マルチスレッド環境内でオブジェクトを処分する方法および装置

Info

Publication number
JPH1049384A
JPH1049384A JP9128409A JP12840997A JPH1049384A JP H1049384 A JPH1049384 A JP H1049384A JP 9128409 A JP9128409 A JP 9128409A JP 12840997 A JP12840997 A JP 12840997A JP H1049384 A JPH1049384 A JP H1049384A
Authority
JP
Japan
Prior art keywords
state
thread
computer
state value
request
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.)
Pending
Application number
JP9128409A
Other languages
English (en)
Inventor
Christian J Callsen
クリスチャン・ジェイ・コールセン
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 JPH1049384A publication Critical patent/JPH1049384A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

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)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 マルチスレッド・コンピュータ環境内でスレ
ッドが安全にオブジェクトを処分する方法および装置を
提供する。 【解決手段】 本発明では、状態機械を各オブジェクト
と関連づける。オブジェクトの呼出しが行われたとき、
状態を削除するために状態機械に質問する。削除コール
が発生した後でオブジェクトに対して行われた呼出し
は、オブジェクトが削除されたと解釈し、そのオブジェ
クトに対するアクティブ呼出しに追加されない。さら
に、後続の削除コールもオブジェクトが削除されたと解
釈し、障害指示を戻す。初めの削除コールは、オブジェ
クトが最後に削除されたときに成功を戻す。したがっ
て、新しい呼出しは除外され、多数の削除コールが適切
に処理される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ環境
内でのオブジェクト指向プログラミングの分野に関す
る。
【0002】
【従来の技術】従来技術のマルチスレッド・コンピュー
タ環境では、プロセスからのスレッドがオブジェクトを
削除するコールを送ると、そのスレッドは一般に、その
同じオブジェクトと相互作用する他のスレッドがクリア
するのを待つ。この待ち期間中、同じオブジェクトを呼
び出す他のスレッドが存在し、したがってそのオブジェ
クトに対するアクティブスレッドの数が減少するのでは
なく増加するのが普通である。したがって、オブジェク
トがもちろん妥当な時間内で削除されるという保証はま
ったくない。また、従来技術では、複数のスレッドがオ
ブジェクトを削除しようと試みたとき、問題が生じる。
一般に、削除するスレッドはそれぞれ、他のスレッドが
クリアされるまで待ち、したがって待っているスレッド
の数が不必要に増加する。
【0003】オブジェクトは、業務実施など手順および
それらのデータをカプセル化する明確に定義された自蔵
ソフトウェア・モジュールである。オブジェクトは、慎
重に定義されたインタフェースを介して互いに通信する
ことによって、コンピュータを標準化された電子部品か
ら製造する方法と同様に、複雑な解決策を構成すること
ができる。再使用および標準化の多数のレベルが可能に
なり、したがってエンジニアは、高度に再使用可能かつ
レベレッジ可能なモジュール、アプリケーションおよび
システム全体を製造することができる。
【0004】ネットワーク化オブジェクト技術では、ア
プリケーションは、実質上アプリケーションまたはオブ
ジェクトが常駐する場所と無関係に、ネットワーク内の
任意の場所においてオブジェクトおよびそれらの共用サ
ービスにアクセスすることができる。また、ネットワー
ク化オブジェクトでは、それがモデル化するアプリケー
ションまたは業務プロセスを混乱させる危険なしに個々
のオブジェクトを更新することができ、したがって複雑
なシステムの優美な漸進的発展が促進される。例えば、
新しいコンポーネントが故障した場合、そのコンポーネ
ントの先祖を迅速かつ透過的に再インストールすること
ができる。
【0005】ネットワーク化オブジェクト環境の例は、
ネットワークおよび異なる計算プラットフォーム間でオ
ブジェクトの共用を実現するSunSoftTMのCOR
BAコンプライアントNEOプロダクト・ファミリであ
る。
【0006】600以上のソフトウェア・ベンダ、開発
者、およびエンド・ユーザ組織から構成されるオブジェ
クト管理グループ(OMG)は、異種分散オブジェクト
指向アプリケーションをサポートする共通のアーキテク
チャの基準を開発し、開発し続けている。OMG共通オ
ブジェクト要求ブローカ・アーキテクチャ(CORB
A)は、多数のベンダからの異なるオブジェクト・シス
テムがネットワーク上で互いに相互作用することができ
るように設計されている。CORBA規格は、次の4つ
の構成要素を含む。 i)ネットワーク化環境内でオブジェクトを管理するオ
ブジェクト要求ブローカ(ORB) ii)ORB間通信の相互操作性 iii)共通オブジェクト・サービス(CORBAサー
ビス) iv)通常使用されるプログラミング言語のマッピング
【0007】ネットワーク・オブジェクト要求ブローカ
(ORB)は、標準のインタフェース・プロトコルを介
してオブジェクトのシームレス位置指定および実行を実
現し、したがってオブジェクトおよびプログラムがネッ
トワーク間で互いに透過的に相互作用することができる
ネットワーク・ベースのCORBAコンプライアント・
ソフトウェア・システムである。NEO ORBは、必
要に応じて増減可能な性能および使用可能度を提供する
1つまたは複数のマルチスレッドUNIXプロセッサと
して実施される。
【0008】異種オブジェクト相互操作性を促進するた
めに、OMGは、ソフトウェア・ベンダがOMGコンプ
ライアント・プロダクトを試験し、送達するのを援助す
るCORBA 2.0インターネットInter−ORB
プロトコルのポータブル・ソース・コード・リファレン
ス・インプリメンテーションを提供した。インターネッ
トInter−ORBプロトコル(Internet−
IOP)は、異なるCORBA 2.0コンプライアント
・ベンダからのORBを接続し、それらが互いに通信す
ることができる標準化された方法を提供する。現在のイ
ンタフェースIOPは、TCP/IPプロトコルに基づ
く。
【0009】OMG CORBAサービス定義は、命
名、事象、特性、ライフ・サイクルおよび関連サービス
など、オブジェクトを用いて分散システムを作成するた
めに必要な基本的動作を規定する。
【0010】異なるオブジェクト・システムが相互作用
する場合、言語独立性が重要である。インタフェース定
義言語(IDL)では、インタフェースおよびインプリ
メンテーションの分離が可能であり、従ってオブジェク
ト・インプリメンテーション詳細がオブジェクトのプラ
グアンドプレイ品質を損ねることなく変更できる。OM
G IDLは、オブジェクトの挙動をIDLで定義する
ことができるオブジェクトの動作のニュートラル・イン
タフェース定義であるが、インタフェースのC、C+
+、ObjectiveC、またはSmalltalk
言語への自動変換に適合する。
【0011】UNIXによって提供されるものなど、マ
ルチスレッド環境は、一般に、ネットワーク化オブジェ
クトをサポートするのに使用される。スレッドは、より
大きいプロセスから生成され、例えば、印刷プロセスの
実施、データベース・オブジェクトに対する処置など、
いくつかの機能を実施するサブプロセスである。多数の
スレッドをサポートすることによって、システムは、多
数のクライアントおよびプロセスに同時にサービスする
ことができる。これにより、ネットワーク上でオブジェ
クトおよびサービスを共用することができる。残念なが
ら、オブジェクトが複数のスレッドによって呼び出され
た場合、オブジェクトに対して実施されるいくつかの処
置がより複雑になる。
【0012】CORBA環境では、オブジェクト要求ブ
ローカ・デーモン・プロセス(ORBD)は、それに登
録されたクライアント・プロセスからオブジェクト・コ
ールを受け取る。次いで、ORBデーモンは、ネットワ
ーク上のオブジェクトを位置指定し、クライアント・プ
ロセスとネットワーク化オブジェクトの間のインタフェ
ースとして働く。NEO環境では、ORBデーモンは、
標準のNEOオブジェクトか、または場合によっては、
NEOオブジェクトとして実施すべきNEOシェル内に
カプセル化されたレガシ・プロセスであるオブジェクト
用の他のインタフェースとして働くようにNEOオブジ
ェクト・サーバをアクティブ化させる。NEOオブジェ
クト・サーバは、ORBデーモンによって転送されたコ
ールに応答する必要があるオブジェクトをインスタンス
化する働きをする。
【0013】図3は、CORBAコンプライアント・ネ
ットワーク・オブジェクト・システムのブロック図であ
る。多数のスレッドがエレメント300〜303によっ
て示されており、スレッド300〜301は、第1のク
ライアント・プロセス、クライアント・プロセス1から
生成されたスレッドであり、スレッド302〜303
は、第2のクライアント・プロセス、クライアント・プ
ロセスNから生成されたスレッドである。図3に示すよ
うに、単一のクライアント・プロセスが任意の数のスレ
ッドを生成する。各スレッド300〜303はオブジェ
クト要求ブローカ・デーモン(ORBD)プロセス30
4にリンクされる。ORBDプロセス304は、オブジ
ェクト・サーバ305およびオブジェクト・サーバ30
7によって示される複数のオブジェクト・サーバにリン
クされる。第2のORBDプロセス、ORBDプロセス
310はさらにORBDプロセス304にリンクされ
る。ORBD310は、他のオブジェクト・サーバおよ
びクライアント・プロセス(図示せず)に結合すること
もできる。オブジェクト・サーバ305はオブジェクト
306にリンクされる。オブジェクト・サーバ307は
オブジェクト308およびオブジェクト309にリンク
される。
【0014】ORBDプロセス304は、クライアント
・プロセス・スレッド300〜303から位置指定コー
ルまたは位置指定要求の形でオブジェクト要求を受け取
り、適切なオブジェクトをサポートしているオブジェク
ト・サーバを決定する。必要なサーバが現在動作してい
ない場合、サーバがアクティブ化し、オブジェクトがイ
ンスタンス化する。オブジェクトの位置に関する情報
は、位置指定コールに応答して戻され、スレッドとオブ
ジェクトの間の他の要求は、位置情報によって指示され
る。同じオブジェクトは、オブジェクトと適用可能なす
べてのスレッドとの間の相互作用を同時に確立するため
に、他のスレッドからの位置指定コールによって同様に
呼び出される。
【0015】ORBデーモン310は、インターネット
など大きいネットワークを介してネットワーク化オブジ
ェクト環境にゲートウェイを実施し、またそれ自体の定
義域内のクライアントおよびオブジェクト・サーバにプ
ラットフォーム依存インタフェースを提供すると同時
に、ORBD304に標準化されたインタフェースを提
供することによって、プラットフォーム間相互作用を実
施する。
【0016】オブジェクト・サーバ305および307
は、オブジェクト306および308〜309などによ
って示されるオブジェクトまたはオブジェクト・ライブ
ラリへのアクセスを実施する。レガシ・オブジェクト、
すなわち元来ネットワーク化オブジェクト環境用に設計
されていないスタンドアロン・アプリケーションおよび
他のオブジェクトを含むオブジェクトは、オブジェクト
・サーバがそれを介してレガシ・オブジェクトの機能に
アクセスすることができるインタフェースを形成するI
DLシェルを具備する。ネットワークが実質上ハードウ
ェア境界と無関係なとき、オブジェクトおよびオブジェ
クト・サーバはクライアント・プロセスおよびORBデ
ーモンと同じコンピュータ上に常駐するか、またはネッ
トワーク内の別々のコンピュータ上に常駐する。同様
に、ネットワーク化オブジェクト環境は実質上、ネット
ワークのベース・レベル・インプリメンテーションと無
関係である。
【0017】上述のように、マルチスレッド環境では、
多数のスレッドが同じオブジェクトを同時に呼び出す。
これは、記憶装置を他に使用するため、またはオブジェ
クトがもはや有効でないなどのために、1つのスレッド
がオブジェクトを処分することを望むとき問題になる。
オブジェクトの処分は、サービスされるスレッドの数が
多いので、生半可なものではない。オブジェクトを突然
処分すると、サービスされている他のスレッドを混乱さ
せ、混乱およびスレッド回復のクライアント・プロセス
通知を処理する他のプロセスを要求することによってプ
ロセスが複雑になる。したがって、他のスレッドの混乱
を回避するために、オブジェクトの処分は、オブジェク
トによってサービスされているスレッドの数が0のとき
に行われるべきである。例えば、処分しようとしている
スレッドは、他のすべての現在スレッドがオブジェクト
からクリヤするのを待つ。残念ながら、その間に、同じ
オブジェクトに対してより多くのスレッド呼出しが行わ
れる。
【0018】図1は、オブジェクト呼出しプロセスを示
す流れ図である。ステップ100において、スレッド
は、例えば、位置指定要求によってORBデーモンから
オブジェクトのアドレスを得る。ステップ101におい
て、スレッドは、オブジェクトのアドレスに向けられた
メソッド呼出しによってオブジェクトを呼び出す。ステ
ップ102において、呼び出されているオブジェクトが
現在すでに別のスレッドによって呼び出されているかど
うかに基づいて分岐が起こる。オブジェクトが現在呼び
出されている場合、ステップ104において、アクティ
ブ呼出しカウントが1だけ増分される。オブジェクトが
現在別のスレッドによって呼び出されていない場合、ス
テップ103において、呼出しを反映するためにアクテ
ィブ呼出しカウントが初期設定される。
【0019】ステップ103および104はステップ1
05に到る。ステップ105において、オブジェクトは
要求された形でスレッドをサービスする。ステップ10
6において、スレッドがオブジェクトによって提供され
た方法の使用を終えると、スレッドまたは呼出しが終了
し、ステップ107において、アクティブ呼出しの数が
1だけ増分される。オブジェクトを使用しているスレッ
ドが終了していない場合、プロセスはステップ105に
戻る。
【0020】図1に示される形で、多数のスレッドが、
アクティブ呼出しカウント中に記載された連続的な呼出
しによって同じオブジェクトを呼び出す。上述のよう
に、アクティブ呼出しカウントはスレッドアクティブを
反映するが、オブジェクトは、プロセスを混乱させるこ
となく即座に処分することができない。図2は、マルチ
スレッド環境内でオブジェクトを処分する従来技術のプ
ロセスを示す。
【0021】図2のステップ200において、スレッド
はオブジェクトを削除するコールを送る。後続のステッ
プ201において、他のプロセスを混乱させることなく
処分を実施することができるかどうかを判定するため
に、そのオブジェクトに対するアクティブ呼出しの数、
すなわちオブジェクトにアクセスしているスレッドの現
在数を質問する。アクティブ呼出しの数が0であり、オ
ブジェクトにアクセスしている他のプロセス・スレッド
が存在しないことが分かった場合、ステップ202にお
いてオブジェクトを削除する。しかしながら、アクティ
ブ呼出しの現在数が0でない場合、まだオブジェクトを
削除できない。処分しようとしているスレッドは、ステ
ップ203においてアクティブ呼出しが終了するのを待
ち、アクティブ呼出しの数を質問するためにステップ2
01に戻る。したがって、オブジェクトは、アクティブ
呼出しの数が0に達するまで削除されない。
【0022】スレッドがオブジェクトを削除するのを待
っている間、図1に示すように、アクティブスレッドの
終了および新しいスレッドの到着を反映するために、ア
クティブ呼出しの数が更新される。ステップ201にお
いて最終的にアクティブ呼出しが確実に0であると判定
された場合、オブジェクトが削除される。
【0023】オブジェクトの処分に図2のプロセスを使
用すると、削除されるオブジェクトがアクティブ呼出し
がクリヤするのを待つ間、長い遅延がもたらされる。さ
らに、新しいスレッド呼出しの可能性があるので、削除
プロセスがいつも完全であるという保証はない。その結
果、無効なオブジェクトが連続的に使用され、また削除
されないオブジェクトによって貴重な記憶装置が不必要
に占拠されることになる。
【0024】図2のプロセスにおいて多数の削除要求を
処理するプロセスは存在しない。後続のスレッドによる
削除要求は、初めの削除コールの場合と同様に、アクテ
ィブ呼出しがクリヤするまで待っている状態に保たれ
る。これは、各場合において待っているスレッドを考慮
するためにネットワーク・オーバヘッドが増大するので
不必要であり、望ましくない。
【0025】
【発明が解決しようとする課題】本発明は、マルチスレ
ッド・コンピュータ環境内でスレッドが安全にオブジェ
クトを処分する方法および装置を提供する。プロセスか
らのスレッドがオブジェクトを削除するコールを送る
と、そのスレッドは一般に、その同じオブジェクトと相
互作用する他のスレッドがクリアするのを待つ。この待
ち期間中、同じオブジェクトを呼び出す他のスレッドが
存在し、したがってそのオブジェクトに対するアクティ
ブスレッドの数が減少するのではなく増加するのが普通
である。また、複数のスレッドがオブジェクトを削除し
ようと試みた場合、問題が生じる。
【0026】
【課題を解決するための手段】本発明では、状態機械を
各オブジェクトと関連づける。オブジェクトの呼出しが
行われたとき、状態を削除するために状態機械に質問す
る。削除コールが発生した後でオブジェクトに対して行
われた呼出しは、オブジェクトが削除されたと解釈し、
そのオブジェクトに対するアクティブ呼出しに追加され
ない。さらに、後続の削除コールもオブジェクトが削除
されたと解釈し、障害指示を戻す。初めの削除コール
は、オブジェクトが最終的に削除されたときに成功を戻
す。したがって、新しい呼出しは除外され、多数の削除
コールが適切に処理される。
【0027】標準の動作中、オブジェクトの状態は「存
在する」と記録される。スレッドがオブジェクトを削除
するコールを送ると、オブジェクトは「削除すべき」状
態に入る。他のスレッドによる後続の呼出し試みは、オ
ブジェクトの状態を「削除された」と解釈し、したがっ
てこのオブジェクトのインスタンス化が阻止される。す
べてのアクティブスレッドがオブジェクトからクリヤさ
れた後、オブジェクトの状態は「削除された」に変化
し、システムはオブジェクトを処分する。
【0028】
【発明の実施の形態】マルチスレッド環境内でオブジェ
クトを処分する方法および装置について説明する。以下
の説明では、本発明のより完全な説明を実施するために
多数の特定の詳細を詳細に記載する。しかしながら、本
発明は、これらの特定の詳細なしに実施できることが当
業者には明らかであろう。他の場合には、本発明を不必
要に曖昧にしないために、周知の特徴については詳細に
説明していない。
【0029】本発明は、図4に示すような汎用コンピュ
ータ上で実施できる。キーボード410およびマウス4
11は、双方向システム・バス418に結合される。キ
ーボードおよびマウスは、コンピュータ・システムにユ
ーザ入力を導入し、かつそのユーザ入力を中央演算処理
装置(CPU)413に伝達するためのものである。図
4のコンピュータ・システムはまた、キーボード41
0、マウス411およびCPU413とともにすべて双
方向システム・バス418に結合されたビデオ・メモリ
414、主メモリ415および大容量記憶装置412を
含む。大容量記憶装置412は、磁気、光学または磁気
光学記憶システム、あるいはその他の使用可能な任意の
大容量記憶技術など、固定媒体ならびに取外し可能媒体
を含む。バス418は、例えば、ビデオ・メモリ414
または主メモリ415をアドレス指定するための32の
アドレス線を含む。システム・バス418はまた、例え
ば、CPU413、主メモリ415、ビデオ・メモリ4
14および大容量記憶装置412など構成要素との間お
よび構成要素間でデータを転送するための32ビット・
データ・バスを含む。あるいは、別々のデータ線および
アドレス線の代わりに、多重データ/アドレス線を使用
することもできる。
【0030】本発明の好ましい実施形態では、CPU4
13は、680X0プロセッサなどMotorola社
製の32ビット・マイクロプロセッサ、または80X8
6プロセッサやPentiumプロセッサなどInte
l社製のマイクロプロセッサである。しかしながら、他
の任意の適切なマイクロプロセッサまたはマイクロコン
ピュータも使用できる。主メモリ415は、ダイナミッ
ク・ランダム・アクセス・メモリ(DRAM)から構成
される。ビデオ・メモリ414は二重ポート式ビデオ・
ランダム・アクセス・メモリである。ビデオ・メモリ4
14の1つのポートは、ビデオ増幅器416に結合され
る。ビデオ増幅器416は、陰極線管(CRT)ラスタ
・モニタ417を駆動するのに使用される。ビデオ増幅
器416は、当技術分野において周知であり、任意の適
切な装置によって実施される。この回路は、ビデオ・メ
モリ414内に記憶されたピクセル・データを、モニタ
417が使用するのに適したラスタ信号に変換する。モ
ニタ417は、グラフィック・イメージを表示するのに
適したタイプのモニタである。
【0031】ネットワーク環境内では、図4の装置は、
当技術分野において周知の適切な通信ハードウェアおよ
びソフトウェアを使用して、他の同じ装置に結合され
る。ネットワークの共用サービスにアクセスするための
フォント・エンド・システムは、WindowsTMを動
作させるPCシステム、JavaTMアプリケーション・
インタフェースをサポートするウェブ・ブラウザ、So
larisTMを動作させるワークステーション、または
その組合せを含む他の適切なシステムを含む。
【0032】上述のコンピュータ・システムは、例のた
めのものにすぎない。本発明は、任意のタイプのコンピ
ュータ・システムまたはプログラミング環境または処理
環境内で実施できる。
【0033】従来技術では、プロセスからのスレッドが
オブジェクトを削除するコールを送ると、そのスレッド
は一般に、その同じオブジェクトと相互作用する他のス
レッドがクリアするのを待つ。この待ち期間中、同じオ
ブジェクトを呼び出す他のスレッドが存在し、したがっ
てそのオブジェクトに対するアクティブスレッドの数が
減少するのではなく増加するのが普通である。したがっ
て、オブジェクトがもちろん妥当な時間内で削除される
という保証はまったくない。また、従来技術では、複数
のスレッドがオブジェクトを削除しようと試みたとき、
問題が生じる。一般に、削除しようとしているスレッド
はそれぞれ、他のスレッドがクリアされるまで待ち、し
たがって待っているスレッドの数が不必要に増加する。
【0034】本発明は、初めの削除要求を受け取ったと
きに、オブジェクトが最終的に削除され、かつオブジェ
クトが適時に削除されることを保証する方法および装置
を提供する。さらに、不必要に待っているスレッドがサ
ーバ待ち行列に追加されるのを防ぐために、後続の削除
要求を処理するプロセスが実施される。
【0035】本発明では、状態機械を使用して、呼出し
を処理し、要求を削除する。オブジェクトの現在状態が
そこに記憶される状態テーブルが提供される。アクティ
ブ呼出しの現在数もそこに記憶される。要求がオブジェ
クトに送られたときはいつでも、オブジェクトの現在状
態を決定するために状態テーブルに質問する。現在状態
がどんな状態であるか、またどんなタイプの要求が行わ
れているかに応じて、要求に対する適切な応答が決定さ
れる。したがって、いくつかの状態中にいくつかのタイ
プの要求を除外するフレームワークが提供される。
【0036】状態テーブルはプロセス内でオブジェクト
・サーバの一部として実施される。オブジェクトに割り
当てられた3状態変数は、現在状態を記憶するのに十分
であるが、状態値を記憶する他の方法も使用できる。1
つの変数が各オブジェクトに割り当てられているとき、
オブジェクトによって参照される変数のテーブル、また
は状態テーブルは、オブジェクト・サーバ内で実施さ
れ、必要に応じてオブジェクトによって質問される。オ
ブジェクトの状態変数の内容に基づいていくつかの要求
に対する応答を提供するルーチンが、オブジェクト・サ
ーバ内に用意される。
【0037】図7は、コールにおいてターゲットにされ
たオブジェクトに対する位置指定コールおよび削除コー
ルを処理するのに適した3状態機械の一実施形態の状態
図である。オブジェクトがインスタンス化され、標準的
な形で動作しているとき、オブジェクトの状態は「存在
する」と指定される。オブジェクトのインスタンス化
は、関連するオブジェクト・サーバの開始プロセスの一
部として行われるか、またはインスタンス化は、オブジ
ェクトにおいてターゲットにされた最初の位置指定要求
に応答して行われる。いずれにせよ、オブジェクトは、
状態テーブル内に「存在する」と記録される。オブジェ
クトが削除要求を受け取り、削除されるのを待っている
とき、オブジェクトの状態は「削除すべき」と記録され
る。最後に、アクティブスレッドが存在せず、オブジェ
クトが処分されるべきであるか又は処分が済んでいる場
合、オブジェクトの状態は「削除された」と指定され
る。
【0038】「存在する」状態で要求がスレッドから受
け取られた場合、要求はオブジェクトに転送される。削
除要求がスレッドから受け取られた場合、スレッドは待
たされ、ターゲット・オブジェクトの状態は「削除すべ
き」に進められる。
【0039】「削除すべき」状態において、要求がスレ
ッドから受け取られた場合、ターゲット・オブジェクト
が削除されたかのように応答が発生し、それにより削除
要求が行われた後で追加の呼出しを除外する。削除要求
がこの状態において受け取られた場合、要求は戻り、障
害を指示し、それにより要求しているスレッドの不必要
な待ちを防ぎ、初めの削除要求の後の削除要求を適切に
処理する。
【0040】アクティブ呼出し値は、オブジェクトを参
照しているスレッドの数のカウントを維持する。スレッ
ドがオブジェクトに対する要求を発生したとき、オブジ
ェクトのアクティブ呼出し値は、参照を指示するために
変化する。参照しているスレッドが存在しない場合、ア
クティブ呼出し値は0である。このアクティブ呼出し値
は、オブジェクトによって参照される第2のエントリと
して、オブジェクト・サーバ上に別々に記憶される値と
して、またはオブジェクト自体内に記憶される値とし
て、状態テーブル内に記憶される。状態は、アクティブ
呼出し値が0に達したとき「削除すべき」から「削除さ
れた」に進められる。オブジェクトに対する整理(cl
eanup)手順が初期設定され、待っているスレッド
が戻り、オブジェクトの削除が成功したことを指示す
る。
【0041】「削除された」状態において、要求がスレ
ッドから受け取られた場合、要求は、ターゲット・オブ
ジェクトが削除されたかのように処理され、呼出しは行
われない。削除要求がスレッドから受け取られた場合、
削除要求は戻り、障害を指示する。
【0042】上記の状態機械を実施するルーチンの一実
施形態は、ターゲット・オブジェクトの現在状態を決定
するために状態テーブルに質問することによって要求に
応答するソフトウェア・コードを含む。状態および要求
タイプに応じて、ソフトウェア・コードのある部分が障
害指示または待ち指示を戻すか、またはオブジェクトに
関する呼出しをトリガする。ターゲット・オブジェクト
の状態変数は、図7に関して指定された状態に基づいて
更新される。
【0043】状態が「削除すべき」にセットされたと
き、ソフトウェア・コードの別の部分がターゲット・オ
ブジェクトのアクティブ呼出し値に関して「警戒(wa
tchfor)」状態をトリガする。アクティブ呼出し
値が0に達したとき、ソフトウェア・コードはオブジェ
クト整理ルーチンをトリガし、待っているスレッドに関
して成功指示を戻す。
【0044】上記の実施形態は1つの可能な例にすぎ
ず、また状態機械は、本発明の範囲を越えることなく他
の同様な実施形態で実施できることは明らかであろう。
【0045】図5は、本発明の一実施形態によるオブジ
ェクトを呼び出すスレッドについてのプロセスの流れ図
である。プロセスはステップ500から始まり、そのと
きスレッドは、ORBデーモンから、例えば位置指定要
求によってオブジェクトのアドレスを得る。ステップ5
01において、スレッドは、オブジェクトのアドレスに
向けられたメソッド呼出しによってオブジェクトを呼び
出す。ステップ502において、状態機械は、現在状態
を決定するためにターゲット・オブジェクトに割り当て
られた状態変数を検査する。ステップ503において、
オブジェクトが「存在する」状態にない場合、すなわち
オブジェクトが「削除すべき」かまたは「削除された」
状態にある場合、ステップ504において、スレッドは
戻り、障害を報告する。したがって、オブジェクトが削
除されるのを待っている間、新しい呼出しは除外され
る。しかしながら、ステップ305において、状態変数
が、ターゲット・オブジェクトが「存在する」状態にあ
る、すなわち標準の動作中であることを反映した場合、
プロセスはステップ505に進む。
【0046】ステップ505において、呼び出されてい
るオブジェクトが現在すでに別のスレッドによって呼び
出されているかどうかに基づいて分岐が起こる。オブジ
ェクトが現在呼び出されている場合、ステップ507に
おいて、アクティブ呼出しカウントが1だけ増分され
る。オブジェクトが現在別のスレッドによって呼び出さ
れていない場合、ステップ506において、呼出しを反
映するためにアクティブ呼出しカウントが初期設定され
る。
【0047】ステップ506および507はステップ5
08に到る。ステップ508において、オブジェクトは
要求された形でスレッドをサービスする。ステップ50
9において、オブジェクトによって提供された方法の使
用をスレッドが終わった場合、スレッドまたは呼出しが
終了し、ステップ510において、アクティブ呼出しの
数が1だけ増分される。オブジェクトを使用しているス
レッドが終了していない場合、プロセスはステップ50
8に戻る。
【0048】図6は、本発明の一実施形態による削除要
求を送ることによってオブジェクトを削除しようと試み
るスレッドについてのプロセスの流れ図である。プロセ
スはステップ600から始まり、そのときスレッドは、
ターゲット・オブジェクトに削除要求を送る。ステップ
601において、状態機械は、現在状態を決定するため
にターゲット・オブジェクトに割り当てられた状態変数
を検査する。ステップ602において、オブジェクトが
「存在する」状態にない場合、すなわちオブジェクトが
「削除すべき」かまたは「削除された」状態にある場
合、ステップ603において、スレッドは戻り、障害を
報告する。したがって、オブジェクトがすでに削除され
るのを待っている間、新しい削除要求は適切に除外され
る。しかしながら、ステップ602において、状態変数
が、ターゲット・オブジェクトが「存在する」状態にあ
る、すなわち標準の動作中であることを反映した場合、
プロセスはステップ604に進む。
【0049】ステップ604において、ターゲット・オ
ブジェクトの状態変数が「削除すべき」にセットされ、
要求しているスレッドは削除プロセスが終了するのを待
つ。ステップ605において、アクティブ呼出し値が0
であり、アクティブ呼出しが存在しないことをが分かっ
た場合、プロセスは直接ステップ606に進む。しかし
ながら、アクティブ呼出し値が、アクティブ呼出しがタ
ーゲット・オブジェクトに対して残っていることを示す
0よりも大きい場合、ステップ609において、プロセ
スは呼出しが終了するのを待ち、その後ステップ605
に戻る。
【0050】スレッドがオブジェクトを削除するのを待
っている間、図5に示すように、アクティブスレッドの
終了および新しいスレッドの到着を反映するようにアク
ティブ呼出しの数が更新される。ステップ605では、
一定の時間間隔をおいてアクティブ呼出しの数を検査す
るか、または各増分動作または減分動作の後でアクティ
ブ呼出しの数を検査する。ステップ605においてアク
ティブ呼出しが確実に0であると判定された場合、プロ
セスはステップ606に進む。
【0051】すべてのアクティブスレッドがターゲット
・オブジェクトからクリアされたとき、ステップ606
において、状態変数が「削除された」にセットされる。
次いで、ステップ607において、削除要求を果たすべ
き待っているスレッドは、成功指示とともに戻る。後続
のステップにおいて、オブジェクトを削除し、関連する
メモリを再利用するために整理手順を動作させる。
【0052】本発明では、オブジェクトが「存在する」
状態にないときにオブジェクトの追加の呼出しを防ぐこ
とによって、アクティブ呼出し値が引き続き減少し、さ
らに削除動作が適時に行われるようにする。
【0053】また、本発明では、後続の削除要求に関す
る障害を報告することによって、不必要にスレッドが停
滞するのを防ぎ、多数の削除要求、すなわちある削除要
求の成功および他のすべての削除要求の失敗が適切に処
理されるようにする。
【0054】以上、マルチスレッド環境内でオブジェク
トを処理する方法および装置について、1つまたは複数
の特定の実施形態に関連して説明した。本発明は、請求
の範囲およびそれらの同等物の全範囲によって規定され
る。
【図面の簡単な説明】
【図1】 オブジェクトを呼び出すスレッドについての
従来技術プロセスの流れ図である。
【図2】 オブジェクトを削除するスレッドについての
従来技術プロセスの流れ図である。
【図3】 OMG CORBA規格のもとで規定された
ものなど、ネットワーク化オブジェクト環境のブロック
図である。
【図4】 本発明を実施する適切なハードウェア・シス
テムのブロック図である。
【図5】 本発明の一実施形態によるオブジェクトを呼
び出すスレッドについてのプロセスの流れ図である。
【図6】 本発明の一実施形態によるオブジェクトを削
除するスレッドについてのプロセスの流れ図である。
【図7】 本発明の一実施形態によるオブジェクト状態
機械の図である。
【符号の説明】
300、301、302、303 スレッド 304 オブジェクト要求ブローカ・デーモン(ORB
D)プロセス 305 オブジェクト・サーバ1 306 オブジェクト1/1 307 オブジェクト・サーバN 308 オブジェクトN/1 309 オブジェクトN/N 310 ORBデーモン2 410 キーボード 411 マウス 412 大容量記憶装置 413 中央演算処理装置(CPU) 414 ビデオ・メモリ 415 主メモリ 416 ビデオ増幅器 417 陰極線管(CRT)ラスタ・モニタ 418 双方向システム・バス
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成9年6月6日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【請求項12】 アクティブ呼出し数を有するオブジェ
クトと、 前記オブジェクトに向けられた要求に応答する状態マシ
ンと有するマルチスレッド環境内でオブジェクトを処分
する装置。 ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成9年7月30日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図2】
【図1】
【図7】
【図3】
【図4】
【図5】
【図6】

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ環境内で状態をオブジェク
    トと関連づけるステップと、 第1のスレッドからのオブジェクト削除要求に応答し
    て、前記状態を第1の状態値から中間状態値に変更する
    ステップと、 アクティブ呼出しの数が0に達したときに、前記状態を
    前記中間状態値から第3の状態値に変更するステップと
    を含むコンピュータ環境内でオブジェクトを処分する方
    法。
  2. 【請求項2】 前記状態が前記第3の状態値に変化した
    ときに、 前記オブジェクトを削除するステップと、 前記第1のスレッドを戻すステップとをさらに含む請求
    項1に記載の方法。
  3. 【請求項3】 前記状態が前記中間状態値を含むとき
    に、第2のスレッドに、前記第2のスレッドからのオブ
    ジェクト削除要求に関する障害を報告させるステップを
    さらに含む請求項1に記載の方法。
  4. 【請求項4】 前記状態が前記中間状態値を含んでいる
    間に、前記オブジェクトの追加の呼出しを排除するステ
    ップをさらに含む請求項1に記載の方法。
  5. 【請求項5】 前記第1のスレッドからの要求に応答し
    て前記オブジェクトを呼び出すステップと、前記第1の
    スレッドによって呼び出されたときに、前記状態を前記
    第1の状態値にセットするステップとをさらに含む請求
    項1に記載の方法。
  6. 【請求項6】 マルチスレッド環境内でオブジェクトを
    処分するコンピュータ読取り可能プログラムが収納され
    た記録媒体であって、 コンピュータに、状態をオブジェクトと関連づけさせる
    コンピュータ読取り可能プログラムと、 コンピュータに、第1のスレッドからのオブジェクト削
    除要求に応答して前記状態を第1の状態値から中間状態
    値に変更させるコンピュータ読取り可能プログラムと、 コンピュータに、アクティブ呼出しの数が0に達したと
    きに、前記状態を前記中間状態値から第3の状態値に変
    更させるコンピュータ読取り可能プログラムとを含むコ
    ンピュータ読取り可能記録媒体。
  7. 【請求項7】 コンピュータに、前記状態が前記第3の
    状態値に変化したときに前記オブジェクトを削除させる
    コンピュータ読取り可能プログラムと、 コンピュータに、前記状態が前記第3の状態値に変化し
    たときに前記第1のスレッドを戻させるコンピュータ読
    取り可能プログラムとをさらに含む請求項6に記載の記
    録媒体。
  8. 【請求項8】 コンピュータに、前記状態が前記中間状
    態値を含むときに、第2のスレッドに前記第2のスレッ
    ドからのオブジェクト削除要求に関する障害を報告させ
    るコンピュータ読取り可能プログラムをさらに含む請求
    項6に記載の記録媒体。
  9. 【請求項9】 コンピュータに、前記状態が前記中間状
    態値を含んでいる間に、前記オブジェクトの追加の呼出
    しを除外させるコンピュータ読取り可能プログラム・コ
    ードをさらに含む請求項6に記載の記録媒体。
  10. 【請求項10】 コンピュータに、前記第1のスレッド
    からの要求に応答して前記オブジェクトを呼び出させる
    コンピュータ読取り可能プログラムドと、 コンピュータに、前記第1のスレッドによって呼び出さ
    れたときに、前記状態を前記第1の状態値にセットさせ
    るコンピュータ読取り可能プログラムとをさらに含む請
    求項6に記載の記録媒体。
  11. 【請求項11】 中央演算処理装置(CPU)と、 アクティブ呼出し値を有するオブジェクトと、 前記オブジェクトと関連する状態変数を有する状態テー
    ブルと、 コードの第1の部分およびコードの第2の部分を有する
    ソフトウェア・プログラム・コードを含む前記CPUに
    よって実行されるプロセスとを含み、 前記コードの第1の部分は、前記状態変数にアクセスす
    ることによってスレッドからの要求に応答し、かつ前記
    状態変数の内容に応じて前記スレッドに応答を戻し、 前記コードの第2の部分は、前記アクティブ呼出し値が
    0に達したときに、前記オブジェクトを処分することに
    よって前記状態変数の変化に応答するマルチスレッド環
    境内でオブジェクトを処分する装置。
JP9128409A 1996-05-17 1997-05-19 マルチスレッド環境内でオブジェクトを処分する方法および装置 Pending JPH1049384A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/650314 1996-05-17
US08/650,314 US6247039B1 (en) 1996-05-17 1996-05-17 Method and apparatus for disposing of objects in a multi-threaded environment

Publications (1)

Publication Number Publication Date
JPH1049384A true JPH1049384A (ja) 1998-02-20

Family

ID=24608375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9128409A Pending JPH1049384A (ja) 1996-05-17 1997-05-19 マルチスレッド環境内でオブジェクトを処分する方法および装置

Country Status (4)

Country Link
US (1) US6247039B1 (ja)
EP (1) EP0807884B1 (ja)
JP (1) JPH1049384A (ja)
DE (1) DE69720100D1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842898B1 (en) * 1999-06-10 2005-01-11 International Business Machines Corporation Method and apparatus for monitoring and handling events for a collection of related threads in a data processing system
US6839748B1 (en) 2000-04-21 2005-01-04 Sun Microsystems, Inc. Synchronous task scheduler for corba gateway
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US6915324B1 (en) 2000-04-21 2005-07-05 Sun Microsystems, Inc. Generic and dynamic mapping of abstract syntax notation (ASN1) to and from interface definition language for network management
US7010586B1 (en) 2000-04-21 2006-03-07 Sun Microsystems, Inc. System and method for event subscriptions for CORBA gateway
US7478403B1 (en) 2000-04-21 2009-01-13 Sun Microsystems, Inc. Secure access to managed network objects using a configurable platform-independent gateway providing individual object-level access control
US7783720B1 (en) 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
US7206843B1 (en) 2000-04-21 2007-04-17 Sun Microsystems, Inc. Thread-safe portable management interface
US6950935B1 (en) 2000-04-21 2005-09-27 Sun Microsystems, Inc. Pluggable authentication modules for telecommunications management network
US7228346B1 (en) * 2000-04-21 2007-06-05 Sun Microsystems, Inc. IDL event and request formatting for corba gateway
US7228175B2 (en) 2002-05-15 2007-06-05 Cardiac Pacemakers, Inc. Cardiac rhythm management systems and methods using acoustic contractility indicator
US7500242B2 (en) * 2003-09-08 2009-03-03 Intel Corporation Low-contention lock
US20060015872A1 (en) * 2004-07-13 2006-01-19 Pohl William N Process management
US9436503B2 (en) * 2013-10-31 2016-09-06 Emu Solutions, Inc. Concurrency control mechanisms for highly multi-threaded systems
US11175802B2 (en) * 2018-09-21 2021-11-16 Sap Se Configuration object deletion manager

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809168A (en) 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
US5295262A (en) 1991-05-16 1994-03-15 International Business Machines Corporation Read-only access without blocking via access vectors
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5692183A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment

Also Published As

Publication number Publication date
EP0807884A1 (en) 1997-11-19
EP0807884B1 (en) 2003-03-26
DE69720100D1 (de) 2003-04-30
US6247039B1 (en) 2001-06-12

Similar Documents

Publication Publication Date Title
US6272559B1 (en) Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6393497B1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6463446B1 (en) Method and apparatus for transporting behavior in an event-based distributed system
JP4729172B2 (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
US6487607B1 (en) Methods and apparatus for remote method invocation
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
AU746391B2 (en) Method and system for facilitating distributed software development in a distribution unaware manner
EP0501610B1 (en) Object oriented distributed computing system
EP1438674B1 (en) System for integrating java servlets with asynchronous messages
US6466947B2 (en) Apparatus and method for dynamically verifying information in a distributed system
US6496865B1 (en) System and method for providing interpreter applications access to server resources in a distributed network
US20070050392A1 (en) Data change notifications
JPH1049384A (ja) マルチスレッド環境内でオブジェクトを処分する方法および装置
JPH1063523A (ja) マルチスレッド環境においてサーバの活動化を制御する方法および装置
US6625641B1 (en) Method and apparatus for providing client support without installation of server software
US6957427B1 (en) Remote object activation in a distributed system
JP2002532777A (ja) オブジェクト指向リアルタイム・プロセス制御システムのためのタイムアウト・オブジェクト、およびその操作の方法
US8312062B1 (en) Automatic resource leak detection
US7089263B2 (en) Apparatus and method for dynamically verifying information in a distributed system
EP1057113B1 (en) Deferred reconstruction of objects and remote loading for event notification in a distributed system
EP1058880A1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
EP1064599B1 (en) Method and apparatus for determining status of remote objects in a distributed system
EP1235149A2 (en) Deferred reconstruction of objects and remote loading for event notification in a distributed system