JPH10510641A - 内部実行スレッド管理方法 - Google Patents

内部実行スレッド管理方法

Info

Publication number
JPH10510641A
JPH10510641A JP8517543A JP51754396A JPH10510641A JP H10510641 A JPH10510641 A JP H10510641A JP 8517543 A JP8517543 A JP 8517543A JP 51754396 A JP51754396 A JP 51754396A JP H10510641 A JPH10510641 A JP H10510641A
Authority
JP
Japan
Prior art keywords
event
entity
list
distribution
thread
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
JP8517543A
Other languages
English (en)
Inventor
ウォルフ,ミカエル
Original Assignee
テレフオンアクチーボラゲツト エル エム エリクソン(パブル)
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 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) filed Critical テレフオンアクチーボラゲツト エル エム エリクソン(パブル)
Publication of JPH10510641A publication Critical patent/JPH10510641A/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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Between Computers (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Jib Cranes (AREA)
  • Multi Processors (AREA)
  • Alarm Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 プロセスにおける内部実行スレッドを管理するためのシステムにおいて、実行スレッドはプロセスの内部イベント・メッセージによって駆動される。これらのメッセージは、イベント発生関数の分配カテゴリに基づいて、イベント受信スレッド(1208〜1212)に分配され、このような内部メッセージに関心があり、その発生のモニタリングを行わせるイベント受信スレッドに対してのみ行われる。各分配カテゴリには、多数のイベント受信スレッド、あるイベント受信スレッドへの1つのイベント発生関数に対する1つ以上のモニタリングを表わす多数の第1の実体(1228〜1238)、分配カテゴリのイベント発生関数に対するモニタリングを表わす多数の第2の実体(1216〜1220)、および分配カテゴリをモニタしたイベント処理スレッド全てを追跡する第3の実体(1214)が関連付けられている。

Description

【発明の詳細な説明】 内部実行スレッド管理方法 発明の技術分野 本発明は、一般的に、遠隔通信データ・システム(telecommunication data s ystem)における実行機構に関する。更に特定すれば、本発明は、プロセスにお ける内部実行管理に関するものである。 オブジェクト指向の遠隔通信アプリケーションを実施する場合、システムの資 源(チャネル、トーン・センダ(tone sender)等)および制御ロジックを表わす オブジェクト・モデルにそれを分割し、アプリケーションの制御機能を実行する ことが実現可能である。また、制御ロジックは、コール制御、ベアラ接続制御(b earer connection control)等のような別個のアクティビティ(activity)に分割 すると有利である。 アプリケーションに対する実行環境とはプロセスのことである。ここでは、プ ロセスとは、あるアクティビティ、例えば、通話を想定したラン・タイム環境を 意味する。プロセス環境は全体的にあるプロセッサに位置し、メモリ(ヒープ、 スタック)および実行機能から成る。プロセス内では、擬似的に同時にスレッド を実行する。また、プロセスは、オブジェクト・モデルも含む。 スレッドとは、制御ロジックのための実行資源でのことある。1つのスレッド の実行は、オブジェクト・モデルによって発生されるイベントによって駆動され る。いくつかのスレッドを同時に起動し(trigger)、次いでスレッドの優先順序 にしたがって分散することも可能である。典型的に、イベントは、外部イベント 、例えば、プロセスによる通知メッセージの受信に応答して発生する。 スレッドは、ある特定のオブジェクトからの個々のイベント、あるオブジェク トからのいずれかのイベント、あるオブジェクト・クラスからの個々のイベント 、またはあるオブジェクト・クラスからのいずれかのイベントをモニタすること ができる。スレッドは、それ自体のスレッド環境(thread contex)、即ち、スタ ックおよびプロセッサ・レジスタを保持するが、他の全スレッドとヒープを共有 す る。 スレッドは、複雑なアクティビティを比較的独立した下位アクティビティ(sub -activity)に分割する際に、強力な支援を提供する。スレッド内のロジックは、 それがイベントの継続を必要とする状態になるまで、またはその実行を終了する まで実行を行う。スレッドが待ち状態に入るか、あるいはその実行を終了したと き、他のスレッドに実行の可能性が与えられる。これは、全ての非同期イベント は、制御ロジックがそれを処理する用意ができたときに、制御ロジックに送出さ れることを意味する。 オブジェクト・モデルは、ISDN加入者の端末、接続、加入者などのような 、アプリケーションに必要な実オブジェクトの抽象概念として使用される。オブ ジェクトは、メソッドのコール、例えば、接続オブジェクトによって提供される メソッド「接続」のコールによって、制御ロジックにサービスを提供する。オブ ジェクトはデータを封入することによって、それら自体の状態を維持する。また 、オブジェクトは、他のプロセッサに対してメッセージの送受信を行うことによ って、プロセス外部の世界と通信することも可能である。関連技術の説明 米国特許第5,421,013号では、アプリケーションはエージェント・ク ラスのインスタンスの集合体であり、各エージェント・クラスはそれ自体のメッ セージ指名機能を有する。個々のエージェントに非プリエンプティブに (non-preemptively)時間を割り当てるマスタ指名プロセス(master dispatcher p rocess)を含むアプリケーション・プログラミング・インターフェースによって 、マルチスレッドが得られる。 米国特許第5,355,488号では、アプリケーション・プログラム・イン ターフェースによって一旦接点されたタスクは、当該タスクの完了後に、アイド ル・ステータスに保持される。設定されたタスクはプール内に維持される。タス ク・マネージャは、アプリケーション動作要求に応答して、まずプールを検索し て、タスク要求に対応するアイドル・タスクを探し出す。対応するアイドル・タ スクがプール内にあれば、制御はアプリケーション・コードに移り、実行される 。 米国特許第5,345,588号は、マルチ・スレッド・デジタル・データ処 理環境の実行の各スレッドに、スレッドが1つ以上ある環境において実行される プロシージャが必要とする初期化データの各集合の個別コピーを供給する方法を 開示する。 米国特許第5,319,782号は、第1マルチタスク・オペレーティング・ システムからのタスクの指名を、第2マルチタスク・オペレーティング・システ ムから適宜指名される機能コールのスレッドと同期化させることを開示する。第 2オペレーティング・システムは、1組のコール可能な資源を含む。タスクは、 第2オペレーティング・システムからのコール可能な資源に対するスレッドの所 有権が存続する間、このスレッドに拘束される。 米国特許第5,305,455号では、データ処理システムが、複数のスレッ ドを含む少なくとも1つのプロセスを含む、マルチタスク・モードで動作可能で ある。プロセス毎ではなく、スレッド毎に例外管理を行う。 米国特許第5,247,675号では、プログラム・スレッドに対するパラメ ータを指定することによって、マルチタスク・オペレーティング・システムは、 当該アプリケーション・プログラムを構成するプログラム・スレッドの実行スケ ジュールに対して、アプリケーション・プログラムに影響を与えさせるようにし ている。パラメータは、各スレッドの優先度レベルを示し、そのスレッドが常駐 するクラスを指名する。概要 例えば、電話交換を制御するソフトウエアのような、大きなリアル・タイム・ ソフトウエア・システムを設計する場合、交換が処理しなくてはならないリアル ・タイム・イベントの基本となるアプリケーション固有の複雑性は、多くの場合 、プログラムを書きにくく、理解しにくく、そして維持しにくくする傾向がある 。 本発明の目的の1つは、アプリケーションのリアル・タイム挙動の処理を一層 容易にすることによって、ソフトウエアの複雑性を低減し、書きやすく、理解し 易く、しかも維持し易いものとするように、かかるソフトウエアを構築するフレ ームワークおよび機構を提供することである。 本発明によるプロセスにおいて内部実行スレッドを管理するためのシステムで は、実行スレッドは、発生した内部または外部インシデント(incident)に応答し て、イベント発生関数によって発生される、プロセス内部イベント・メッセージ によって駆動される。内部イベント・メッセージは、優先度を有するイベント受 信スレッドに分配される。この分配は、イベント発生関数の分配カテゴリに基づ いて、イベント処理関数によって制御され、かかる内部メッセージに関心があり 、その発生のモニタリングを行わせる、イベント受信スレッドに対してのみ実行 される。各分配カテゴリに対してアクター(actor)があり、それらの内次のもの をあげることができる。即ち、イベント受信スレッドの数、あるイベント受信ス レッドに対する1つのイベント発生関数のために1つ以上のモニタリングを表わ す第2の実体であって、各々、イベント受信スレッドをモニタした第1の実体全 てのリストを有する前記第2の実体の数、第2の実体のリストによって、分配カ テゴリをモニタリングしたイベント受信スレッド全てを追跡する1つの第3の実 体、各々第2の実体のリストを保持するイベント発生関数の数である。 上述の構造には多数の重要な実施例があり、請求項2〜5に記載されている。 第1の実体は各々、イベント発生関数に対するポインタ、およびイベント受信 スレッドの優先度に関する情報を保持する。 第2の実体は各々、1つ以上の第1の実体によって指し示され、イベント受信 スレッドに対するポインタを保持し、分配されたイベント・メッセージをそれに 送出する。 第3の実体の第2の実体のリストは、イベント受信スレッドを指し示す。 各イベント発生関数は、イベントの送出のために、イベント処理関数へのポイ ンタを保持する。 その他の有益な実施例は、請求項6〜28から明白である。図面の簡単な説明 これより、図面を参照しながら、以下に本発明についてより詳細に説明する。 第1図は、スレッドの実行を示す図である。 第2図は、スレッドの実行についての状態遷移図である。 第3図は、遠隔通信の場合における、切断プロセスを示す図である。 第4図〜第7図は、イベントの各管理状況を識別するために使用されるグラフ ィカル・プログラミング言語において用いられるシンボルを示す。 第8図は、オブジェクト・メソッド・コールおよびイベントを通じてのスレッ ド間の間接通信を示す。 第9図は、イベントを通じてのスレッド間の直接通信を示す。 第10図は、グラフィカル言語のシンボルを使用した図において、プロセスの 実行中における、ローカル・イベント・キュー内のイベントのバッファ処理を示 す。 第11図は、第10図と同じ状況を示す従来の図であるが、プロセスをそれに 含まれる要素およびメッセージとともに示す。 第12図は、本発明の基本である、イベント機構の中心的なデータ構造を示す 図である。 第13図〜第18図は、第12図の図において用いたオブジェクト・クラスの データ構造を示す。そして、 第19図および第20図は、2つのビット・アレイを示す。実施例の詳細な説明 オブジェクト指向の遠隔通信アプリケーションを実施する場合、システムの資 源(チャネル、トーン・センダ等)および制御ロジックを表わすオブジェクト・ モデルにそれを分割し、アプリケーションの制御機能を実行することが実現可能 である。また、制御ロジックは、コール制御、ベアラ接続制御などのような別個 のアクティビティに分割すると利点がある。 アプリケーションに対する実行環境とはプロセスのことである。ここでは、プ ロセスとは、あるアクティビティ、例えば、通話を想定したラン・タイム環境を 意味する。プロセス環境は全体的にあるプロセッサに位置し、メモリ(ヒープ、 スタック)および実行機能から成る。プロセス内では、擬似的に同時にスレッド を実行する。また、プロセスは、オブジェクト・モデルを含む。 スレッドとは、制御ロジックのための実行資源のことである。1つのスレッド の実行は、オブジェクト・モデルによって発生されるイベントによって駆動され る。いくつかのスレッドを同時に起動し、次いでスレッドの優先順序にしたがっ て分散することも可能である。典型的に、イベントは、外部イベント、例えば、 プロセスによる通知メッセージの受信に応答して発生する。 スレッドは、ある特定のオブジェクトからの個々のイベント、あるオブジェク トからのいずれかのイベント、あるオブジェクト・クラスからの個々のイベント 、またはあるオブジェクト・クラスからのいずれかのイベントをモニタすること ができる。スレッドは、それ自体のスレッド環境、即ち、スタックおよびプロセ ッサ・レジスタを保持するが、他の全スレッドとヒープを共有する。 スレッドは、複雑なアクティビティを比較的独立した下位アクティビティに分 割する際に、強力な支援を提供する。スレッド内のロジックは、それがイベント の継続を必要とする状態になるまで、またはその実行を終了するまで実行を行う 。スレッドが待ち状態に入るか、あるいはその実行を終了したとき、他のスレッ ドに実行の可能性が与えられる。これは、全ての非同期イベントは、制御ロジッ クがそれを処理する用意ができたときに、制御ロジックに送出されることを意味 する。 オブジェクト・モデルは、ISDN加入者の端末、接続、加入者などのような 、アプリケーションに必要な実オブジェクトの抽象概念として使用される。オブ ジェクトは、メソッド、例えば、接続オブジェクトによって提供されるメソッド 「接続」のコールによって、制御ロジックにサービスを提供する。オブジェクト はデータを封入することによって、それら自体の状態を維持する。また、オブジ ェクトは、他のプロセッサに対してメッセージの送受信を行うことによって、プ ロセス外部の世界と通信することもできる。 ここでは、一例として、スレッドは、主にグラフィカル・シンタックス(graph ical syntax)を有する特定のグラフィカル・プログラミング言語においてコード 化されたプログラムによって用いられるオブジェクト・セマンティクス(object semantics)に対応するように特別に設計されたものであると仮定するが、C++ でコード化したプログラムも、これらのセマンティクスしたがうように書くこと ができる。 これまでに述べたことの一例として、第1図は、各制御ロジックに対して実行 資源として作用する2つのスレッド104および106を有するプロセス102 を示す。スレッド104および106の実行は、このプロセスにおけるオブジェ クト・ロジックによって発生され各スレッド104および106に属するローカ ル・イベント・キュー112および114によって管理される、イベント108 および110によってそれぞれ駆動される。プロセスは、図示しないアクセス・ プロセスからのアクセス・エージェント・オブジェクト(access agent object) 118によってメッセージ116が受信されることによって開始される。アクセ ス・エージェント・オブジェクト118は、結果としてイベント108を発生し 、これはスレッド104に分配されて、オブジェクト112へのメソッド・コー ル120を実行し、その結果イベント110を発生し、これがスレッド106に 分配されて、このスレッドの実行が開始される。 第2図において、スレッドの実行についての状態遷移図が示されている。開始 および終了状態は示されていないが、次の説明から理解されよう。 新たなスレッドが作成されたとき、直ちに実行を開始するのではなく、「開始 イベント待ち状態」202、即ち、それがそれ自体に配置(post)する開始イベン トにおいて待機する。矢印204によって示される開始イベントの受信時に、状 態「実行」206によって示されるスレッドの実行が開始される。実行時に、ス レッドは待ち状態に入り、なんらかのイベント(群)が生じるのを待つ場合もあ る。 実際には、スレッドが待ち状態に入るか否かは、待っていたイベントが既に発 生したか否かによって左右される。既に発生していれば、スレッドは実行を継続 するが、矢印212によって示される発生したイベントを待ちつつ、矢印208 によって示されるように状態「バッファされた状態の実行」210に入る。その 他の場合、即ち、イベントが未だ発生していない場合、2つの待ち状態の一方2 18または220に入る。状態214「イベント待ち」は、個々のイベントを待 つために用いられる。「イベント待ち」および「受信待ちイベント」への遷移矢 印は、それぞれ、216および218において示されている。状態216「いず れかのイベント待ち」は、いずれかのイベントを待つために用いられる。「いず れかのイベント待ち」および「受信待ちイベント」への遷移矢印は、それぞれ、 222および224において示されている。2つの待ち状態を有する理由は、発 生したイベントの結果としてスレッドが再び開始されようとしている場合、イベ ントがローカル・イベント・キューと一致したときに、異なる戦略を使用するた めである。いずれかのイベントを待っている場合、イベントは常に「一致」し、 その他の場合、ローカル・イベント・キュー全体の検索を行わなければならない 。一致があった場合、スレッドは再び実行を開始し、「実行」状態206に入る 。 状態210、「バッファされた状態の実行」にある場合、スレッドは、あるイ ベントが発生するのを待つ。イベントが既に発生していた場合(ローカル・イベ ント・キューにおいて発見される)、実行は直ちに同一状態で継続される。その 他の場合、スレッドは待ち状態214または216の一方にはいる。 第2図には終了状態はないが、スレッドの主関数が戻るときに、終了に至る。 主関数が戻るためには、スレッドが実行中でなければならないので、終了状態へ の遷移は、「実行」状態206または「バッファされた状態の実行」状態212 のいずれかから行うことができる。 イベントは、全ての対象スレッドがそれを受信し、それを処理する機会を有す るまで、削除してはならない。この状態がいつ発生したかを判定する問題は、イ ベントおよびスレッド・ブロック間の協同によって解決される。通常、関心のあ る全てのスレッドに分配された後に、イベント自体がそれを削除するが、スレッ ドは常にイベントの受信直後に処理するとは限らないので、分配直後にイベント が削除されるのを防止するための対策を取らなければならない。このような状況 が発生するのは、現在待っている訳ではないイベントをスレッドが受信したとき である。イベントを削除できるのは、それを待ち処理した後のみである。 基準カウンタを用いて、イベントに対していくつの基準が存在するかについて の追跡を行う。カウンタが0と判定されたとき、イベントはそれ自体を削除する 。受信されたイベントがスレッドにバッファされるとカウンタは増分され、スレ ッドがバッファされているイベントを待っていて、新たな待ち状態に達した場合 、または消滅(die)した場合に減分される(decremented)。スレッドが消滅すると 、全てのバッファされていたイベントの基準カウンタも減分しなければならない 。これについての更に詳しい説明は、後に、イベント・ブロックのより詳細な説 明に関連付けて行うことにする。 オブジェクトの相互作用に関して、スレッド・クラス(Thread class)が2つの 実行スレッドの環境、即ち、現スレッド環境および当該スレッド自体のスレッド 環境間の切替を管理する。スレッドが待っていたイベントを受信したとき、現ス レッド環境はセーブされ、当該スレッド自体のスレッド環境への切替が行われる 。スレッドがローカル・イベント・キューにないあるイベントを待つ必要がある 場合、他のスレッドに実行の機会が与えられる。 スレッド自体のスレッド環境への切替は、スレッドが待っていたイベントが受 信されたときにのみ行われる。したがって、スレッドを開始するために、特殊な プロシージャを実行する。まず、スレッド・コンストラクタ(thread constructo r)が特殊な開始イベントのモニタリング(monitoring)を設定する。次に、対応す るイベントを作成し配置する。その後、スレッドがこのイベントを受信し、正常 に受信したあらゆるイベントと同様にそれを処理し、スレッドが待っているイベ ントとしてそれを認識することによって、このスレッドの実行を開始する。 イベントは、内部または外部インシデントが特定のプロセスで発生した場合直 ちに関心のあるスレッド全てに知らせることによって、スレッドの実行を調整す るために用いられる。このようなインシデントの例は、通話の切断(外部)、お よびタイム・アウト(内部)である。言い換えれば、イベント関数は、あるプロ セス内で通信する機構を支援する。 イベントはスレッドの実行を開始する。イベントは予め決められた受信先を有 していないが、先の特殊イベントにおいてそれらの関心を宣言したスレッドに分 配される。イベント関数のために、オブジェクト・ロジックおよび制御ロジック の構築を独立して行うことができる。1つのイベントは、名称、送出元、および 発生器からスレッドまで情報を運ぶ関連データから成り、プロセスの範囲内での み存在する。 イベントは、通常、受信メッセージ、例えば、加入者がフック・オン(hook on )を行ったというメッセージの結果として、プロセス内においてオブジェクトに よって発生される。 イベントの指定は、グラフィカル言語と設計言語との組み合わせによって行う ことができる。制御ロジックは、先に述べたように、グラフィカル言語のフロー スクリプト(flowscript)によって指定され、一方オブジェクト・ロジックを構成 するオブジェクトは、設計言語におけるOBJECT TYPE OR CLASS(オブジェクト・ タイプおよびクラス)指定によって指定することができる。 イベント処理は、以下のような多数の特徴的な構造を有する。 −1つのイベントは、それをモニタしていた全スレッドに分配される。1つの プロセスの中で発生された全イベントは、共通の「レター・ボックス」に入るこ とになる。これは、先に述べた「イベント・ハンドラ」であり、ここから更に、 当該イベントにおいてその関心を示したスレッド全てに、これらは送られる。こ れら特定のイベントに関心を示すものがない場合、廃棄される。これら関心の表 示、即ち、イベントのモニタリングの要求(ordering)は、フローの中で明示的に 行わなければならない。 −この特定イベントにおいて、その関心をモニタしていたスレッドにイベント が分配されるとき、スレッドは未だそれを処理する準備ができていない場合もあ る。これは、実行がこのイベントのための待ち状態に未だ達していない場合、ま たは他のスレッドがそのとき実行中である場合にあり得ることである。すると、 イベントは、そのスレッドに属するキューに入れられる(第1図のローカル・イ ベント・キュー112および114を参照)。スレッドがイベントを処理する準 備ができた場合、ローカル・イベント・キューからスレッドを取り込む。 次に、どのように進めるかを決定するために新たなイベントが必要となるまで 、実行は継続される。このイベントは、他の外部イベント、またはタイム・アウ トのような内部イベントの場合もある(第1図のイベント108および110を 参照)。 −同報通信/アクティブ受信。イベント発生器の視点からは、イベントは特定 した受信者に送出することはできない。発生されたイベントは全て、送出元のス レッドも含み、当該イベントをモニタしていたスレッド全てに分配される。この 概念は、イベントを発生する実体(entity)は、イベントに関心がある実体を知ら ないことを暗示する。受信先は、いつ待つのか、何を待つのか(「アクティブ受 信」)を決定する。 −実行は疑似並列的に行われる。スレッドは、疑似並列的即ち1度に1つづつ 実行する。スレッド内の各実行は、スレッドが待っていたイベントの受信時に開 始され、その後スレッドは、再び待つことをそれ自体で解決するか、あるいはそ の実行を終了するまで、混乱することなく実行していく。この段階では、他のス レッドが、当該イベントまたは他のものによって起動され、実行する可能性があ る。ここに記載したことは、例えば、第1図のスレッド104および106に当 てはまる場合がある。 イベントは、それらを配置した順序で、スレッドに分配される。しかしながら 、単一のイベントが1つ以上のスレッドに分配される場合があるので、スレッド は、このような場合の分配順序を示す優先度を有する。また、スレッドは受信し たイベントの再分配を防止し、優先度の低いスレッドがそのイベントを受信する のを防止することもある。 スレッドがイベントを受信可能となるためには、スレッドは、それが配置され る前に、当該イベントを明示的にモニタしていなければならない。モニタリング によって、スレッドは、あるオブジェクト(またはオブジェクト群)からのある イベント(またはイベント群)に対するその関心を宣言する。イベントが配置さ れる前にモニタリングが行われた場合、モニタリングはイベント(またはイベン ト群)を当該スレッドに分配させる。また、スレッドは既に行ったモニタリング を除去することもでき、これによって、当該イベント(またはイベント群)がス レッドに再分配されるのを防止する。 第3図は、プロセス302内で実行される切断(Disconnection)を示す。切断 は、図示しないアクセス・プロセスからの切断メッセージ304によって開始さ れる。アクセス・エージェント306のオブジェクト・ロジックは、その結果、 イベント308によって、ある切断制御ロジックを実行しているスレッド310 を起動する。このロジックは、矢印312によって示されるように、タイマ・オ ブジェクトのインスタンス314を作成することを要求することによって、タイ ミング機能(timing function)を開始する。 次に、スレッド310の制御ロジックの実行は、タイムアウトまたは外部世界 からの他のメッセージのいずれかであり得る、新たなイベントを待つ停止に到達 する。この例では、タイムアウト・メッセージがインスタンス314によって受 信され、スレッド310にタイムアウト・イベントを送り、再び、スレッド31 0の関数ロジックの実行を開始し、その結果、切断メッセージ318および32 0はそれぞれCallオブジェクト322およびリモート・ダイアログ・オブジェク ト324となる。 イベント処理機構は、以下のサービスを提供する。 −イベントの配置(posting)。イベント発生として定義されたオブジェクトは 、発生したイベントを送ることができる。典型的な場合が見られるのは、例えば 、加入者からのフック・オンまたは時間管理(time-supervision)の解放のような 、内部または外部インシデント(incident)の結果として、イベントが作成され たときである。 −イベントのモニタリング。イベント受信スレッドは、受信を望むあるイベン トに対する関心を告示(announce)することができる。あるスレッドによって発生 される1つの特定のイベントまたは可能な全てのイベントに対する関心は、特定 の予約指令において記述される。当該イベントが発生され送出されたとき/場合 、そのイベントに予約した受信スレッドに到達する。 −イベントのモニタリングの取り消し。もはやあるイベントに関心がなくなっ たスレッドは、それに対するモニタリングを取り消すことができる。 −イベント再分配の防止。スレッドは、受信後にイベントが再分配されるのを 防止することができる。イベントを「殺す」ことによって、当該イベントを未だ 受信していないスレッドは、それを行うことができなくなる。 これらのサービスの各々について、以下でより詳細に説明する。 イベントの配置(post)とは、発生したイベントを中心的オブジェクト、即ち 、イベント・ハンドラに送り、ここから、関心のあるスレッドにそれを分配する ことを意味する。先に述べたように、イベントは外部または内部インシデントの 結果として発生される。外部インシデントは、典型的に、メッセージとしてプロ セスに報告され、一方メッセージは、そのプロセス内で、イベント発生器によっ てイベントに変形される。後にイベントが分配されるとき、これらが配置された のと同じ順序で行われる。 イベントを配置するためのグラフィカル・プログラミング言語のシンタックス は、例えば、第4図に示す種類のイベントを配置するシンボルを含む。イベント をモニタしていた全ての待機中のスレッドがそれを受信する。図示のように、シ ンボルは送出されるイベントの名称を含む。シンボル入力パラメータ・データも 、更に以下に続く説明から明らかとなるように、イベントと共に配置することが できる。シンボルは、結果値のない出口を有し、実行すべき次のノードを直接指 し示す。 セマンティクスの観点から、実行されるスレッドは、例えば、イベント「Even tName 」を発生する。このイベントは、それに含まれるデータと共に、それを待 っているスレッド全てに配置される。先に述べたように、イベントは特定したス レッドに配置することはできない。 特定のイベントに関心がある全てのスレッドは、これらのイベントのモニタリ ングを命令する、即ち、あるイベントに対するイベント受信先の関心を告示する ことによって、それらの関心を指定しなければならない。モニタリングは、イベ ントを唯一に識別するデータを含むモニタ・オブジェクトを作成することによっ て行う。言い換えれば、モニタ・オブジェクトが、イベント受信先に変わって、 イベントに対する関心を告示する。グラフィカル・プログラミング言語における シンタックスは、例えば、直立する黒いフラグを有する菱面体である第5図に示 すシンボルによって、イベントのモニタリング開始を指定することができる。こ のシンボルの中には、常に、少なくとも1つの送出元と1つのイベントが指定さ れている。 第4図および第5図にそれぞれ示し先に述べた2つのシンボルの各々は、実行 すべき次のノードを指し示す出力矢印1つのみを有し、この矢印には結果値は付 かない。 モニタリングを望むイベント数、およびイベントが発生した異なる送出元の数 に応じて、「イベントのモニタリング開始」を指定するには、4つの異なる可能 性がある。これらの可能性を次にあげる。 −ある送出元からの1つのイベントのモニタリング。 −ある送出元からのあらゆるイベントのモニタリング。 −あるクラスの送出元からの1つのイベントのモニタリング。 −あるクラスの送出元からのあらゆるイベントのモニタリング。 セマンティクスの観点からは、モニタリング開始のためのシンボルをフローの 中で実行するとき、指定されたイベントの全インスタンスは、それらが発生した ときにはいつでも、このフローに分配されることを注記すべきであろう。これら のイベントは、次に、フローによって指名されるまで、スレッドのローカル・イ ベント・キューに並べられる。 あるクラスの送出元からのイベントをモニタするとは、当該クラスのいずれか のインスタンスがそのイベントを配置する場合、それが受信先に送出されること を意味する。 既に見たように、処理を進めるためにオブジェクトまたはその他のスレッドか ら情報が必要なスレッドは、それ自体を待ち状態に置くことができる。すると、 このスレッドの実行は中断され、他のいずれかのスレッドが実行を開始する。所 望の情報がイベントの形態で受信されたときに実行は再開されるが、現在アクテ ィブとなっているスレッドが実行を停止するまでは、再開されない。 第6図は、グラフィカル・プログラミング言語によって表現されたフローにお ける待ち状態を示す。待ち状態自体は楕円602でシンボル化され、ここからの 矢印604,606,610および610が、シンボル612.1,612.2 ,...612.nを指し示す。シンボルは異なる送出元を示し、各シンボルの 下にある更に別の矢印は、スレッド(フロー)が待っている各送出元からイベン トを示す。第6図に見られるように、これらのイベントは、それぞれ、各送出元 612.1,612.2および612.nに対して、ev1,ev2,ev3; ev4,ev5およびev8,ev9として示されている。送出元の名称がシン ボル内に含まれている。アステリスクを含むシンボルも用いることができるが、 これについては以下で詳しく説明する。待ち状態は名称を有することができる。 また、それに関連する条件のリストも有することができる。 フローの実行が待ち状態に達したとき、条件リストがあれば、これを最初に検 査する。条件が満たされていない場合、エラーとなる。条件が満たされたか、あ るいは条件リストが全くない場合、待ち状態に達したために実行は停止する。所 与のイベントの1つが、当該イベントが連繋する送出元から受信されたとき、実 行は再開される。次に、実行は、発生したイベントによって命名される矢印に従 う。 送出元の名称として、以下のものを適用可能である。 −オブジェクトのインスタンスを指し示す変数。イベントは、実行を再開する ためには、所与のオブジェクトのインスタンスから来なければならない。 −スレッドの識別子。イベントは、実行を再開するためには、所与のスレッド のインスタンスから来なければならない。 −アステリスク(*)。これは、どのオブジェクトまたはスレッドが発生した かには関係なく、上述のイベントのいずれかが対象となることを意味する。 既に行われたモニタリングは、イベント受信先がもはや当該イベントに関心が なくなった場合は、除去してもよい。モニタリングの除去は、イベント受信先が 以前に当該イベントに対する関心を告示したときに作成したモニタ・オブジェク トを削除することによって行われる。 プログラミング言語では、モニタリング停止イベント(stop monitoring event )は、例えば、第7図に示すシンボルによって指定することができる。図示のよ うに、このシンボルは、下向きのフラグを有する点で、第5図のものとは異なる 。少なくとも1つの送出元および1つのイベントがシンボルと共に指定される。 シンボルは、実行すべき次のノードを指し示す出立矢印を1つのみ有し、この矢 印には結果値は付けられない。シンボル停止モニタリング(symbol stop monitor ing)がフローにおいて実行されると、指定したイベントのインスタンスはもは やフローによって受信されることはない。 イベント発生オブジェクトが削除されたときに自動的に発生される、予め定義 されている単一のイベント、即ち、イベントDEATH がある。イベントDEATH は、 他のあらゆるイベントのようにモニタリングや受信が可能であるが、これはデー タを全く運ばない。キーワードDEATH は、このイベントに言及するときにはいつ でも使用しなければならない。 スレッド間の通信にはいくつかの可能性が存在する。1つは、オブジェクト・ メソッド・コールを通じての通信である。オブジェクトは、それらがあるメソッ ドを実行するときに、イベントを発生することができる。次に、イベントは、関 心のあるスレッド全てに送出される。これは、第8図に例を用いて示されている 。 スレッド802は、矢印804即ちオブジェクト806へのメソッド・コールを 送出する。一方、オブジェクト806は、他のスレッド810にイベント808 を送出する。このように、2つのスレッド間の通信が可能である。これらの機構 を適切な方法で組み合わせることによって、「互いに対話する」2つのスレッド を得ることができる。 フロー自体、即ち、スレッドもイベントを発生することができる。これが暗示 するのは、2つ(以上)のスレッドは、互いにイベントを送出し合い、そして互 いからイベントを受信し合うことによって、直接互いに対話可能であるというこ とである。これは、第9図に例を用いて示されており、スレッド902がイベン ト904を他のスレッド906に送出する。簡略化された図は、イベントがスレ ッド間で直接送出されていることを示唆しているように見えるが、そうではない ことに注意されたい。イベントは、図示しない、イベント・ハンドラによって分 配される。 次に、プロセスにおける発生のフロー・チャートを示す第10図、およびその プロセスおよびその要素のいくつかを図示しプロセスを1102で示す第11図 について言及する。モニタされたイベントは、スレッドによって、ローカル・イ ベント・キューにバッファすることができる。バッファリング(buffering)とは 、イベントがモニタされた後、その全ての発生の観察はできるが、モニタリング の前に発生したイベントは入手できないことを意味する。あるイベントがもはや 望ましくなくなった場合、モニタリングを除去しなければならない。既に受信さ れているイベントは、それらが「待たれている」間、ローカル・イベント・キュ ーに残り、この場合、スレッドはその実行を継続することが許される。スレッド が「待っている」ときにイベントが未だ発生していない場合、このスレッドの実 行は、イベントが発生するまでアイドルとなる。 第10図において、1002は、イベントe1のモニタリングである第11図 のプロセス1102の第1ステップとして、開始を示す。このソースはイベント 発生器EG1である。ソースがイベント発生器EG2である、イベントe2のモ ニタリングの開始が、1004で示されている。第11図は、イベント発生器E G1およびEG2が、それぞれ、1104および1106でプロセス1102に 含まれるものとして示している。また、プロセス1102は、ローカル・イベン ト・キュー1110を有するスレッド1108も含む。 第10図において、1006は、実行を中断している間イベントe2の発生を 待っている待ち状態を示す。1008において、イベント発生器EG1からのイ ベントe1がここで発生したことが示され、第11図では、矢印1112によっ て、イベントe1がローカル・イベント・キュー1110にバッファされたこと が示されている。第10図の1010において、イベント発生器EG2からのイ ベントe2がここで発生したことが示され、1012において、その実行開始が 示されている。 第10図のシンボル1014は、イベントe1を待つために、実行を中断する ことを示す。このイベントは既に発生しており、その実行開始が1016によっ て示されている。 次に、イベント・ドリブン・プログラム・スレッドのスケジューリング方法に ついて、第12図を参照しながら、より詳細に説明する。この説明では、オブジ ェクト・クラスについて述べる。これは特定のクラス構造に含まれている。これ らのクラスについて、その名称を以下にあげながら、順次より詳細に説明してい く。 第12図において、ブロック1201〜1206は、ベース・クラスEventGen eratorの各オブジェクト・イベント発生器を示す。そのオブジェクトは、再分配 のために、イベント処理機構の中心的なサービス・クラスEventHandlerのイベン ト・ハンドラ・オブジェクトにイベントを配置することができる。ブロック12 08〜1212は、継承によってイベント・オブジェクトの受信を可能にする、 抽象的ベース・クラスEventReceiver の各オブジェクト・イベント受信先(スレ ッド)を示す。 Event と命名されたクラスは、プロセス・イベントを表わす。Event オブジェ クトは、タグおよびソース即ちイベント発生器によって唯一に定義される。各イ ベント発生器は、クラスDistCat の分配カテゴリのメンバであり、これによって 、1群のイベント発生器のモニタリングを可能としている。第13図を参照する と、EventGeneratorは実施のために以下のオブジェクトを用いている。 −イベントの配置を進めるため、および発生器の作成および破棄を告示するた めのEventHandler。 −ある分配カテゴリにおけるメンバシップのためのDistCat 。 −発生器からのイベントに対する全てのモニタリングを追跡するためのMontIt em。 例えば、EventGeneratorはイベントを配置するためにEvent を用いる。 EventHandlerは中心的なクラスであり、全てのモニタリング、イベント発生器 およびイベント受信先を追跡する構造が維持される。 第14図を参照すると、EventHandlerは実施のために以下のオブジェクト・ク ラスを用いている。 −個々のイベント発生器に対する全てのモニタリングを追跡するためのMonIte m。 −どのイベント発生器がどの分配カテゴリに属するのかを追跡するためのDist CatNode 。ノードは二進ツリーに保持される。 −分配時までイベントをセーブし、次いでそれらを受信先に送出するEvent 。 −分配カテゴリに対する全てのモニタリングを追跡するためのErItem。 −どのイベント受信先が無効とされたかを追跡するDeadErList。 −内部オブジェクトの割り当てのためのMemory。 例えば、EventHandlerは次のオブジェクト・クラスを用いる。 −分配カテゴリに対するモニタリングを登録するためのDistCat 。 −モニタリングを登録するためのEventReceiver 。 −個々のイベント発生器に対するモニタリングを登録するためのEventGenerat or。 EventReceiver は抽象的なベース・クラスであり、継承により、イベントを受 信する可能性を、その派生クラスに追加する。スレッドはEventReceiver から得 られる。 第15図を参照すると、EventReceiver は、実施のために、受信先の構築およ び廃棄の指示を送るクラスEventHandlerを用いる。 例えば、EventReceiver は、受信先から得られるクラスに送出される、クラス Event を用いる。 第12図に戻ると、ブロック1214は、二進ツリーDistCatTree におけるノ ードである、オブジェクトDistCatNode(分配カテゴリ・ノード)を示す。 DistCatTree は、クラスErItem(イベント受信項目(Event Receiver Item))の オブジェクトのリストを含む。このクラスは分配カテゴリのモニタリングを追跡 するために用いられる。各オブジェクトErItemは、イベント受信先へのポインタ を保持し、分配されたイベントをそれに送出する。ブロック1216〜1220 は、イベント受信先1208〜1212の各1つを指し示す各ポインタ1222 〜1226を有する各ErItemオブジェクトを示す。 DistCatNode は、1つの分配カテゴリの全イベント受信先を追跡する。第16 図を参照すると、DistCatNode は、BinTreeNode を継承することによって、イベ ント・ハンドラによる高速検索のための二進ツリーのメンバとしての特性を有す る。実施のために、DistCatNode は、分配カテゴリを記憶するためにDistCat を 、同一分配カテゴリの全イベント受信先のリンクを保持するためにEiItemを用い る(モニタリングを行うあらゆるイベント受信先は、内部構造では、ErItemで表 される)。先の用語「リング」は、以下でも再度見られるが、上述のイベント受 信先のような、リンクされた実体のリストを特徴付けるために用いられ、リスト の最後の実体は、リストの最初の実体を再び指し示す。リングに言及する理由は 、第12図に一例として示した実施例は、このタイプのリストに基づいて構築す るという事実のためのである。当該リストは、しかしながら、リンクされたリス トの形状とする必要はない。 第17図を参照すると、クラスErItemは、内部構造においてモニタされるイベ ント受信先の表現である。これは、イベントがイベント受信先によって受信され る、分配カテゴリに対するモニタリングを追跡する。また、これは、イベントが イベント受信先によって受信される、個々のイベント発生器(MonItem によって 表わされる)に対するモニタリング全てのリングを保持する。 ErItemはRingLinkを継承するので、同一分配カテゴリのErItemは全て、共にリ ンクすることができる。 実施のために、ErItemは以下のクラスを用いる。 −ReceiveEventおよびhandleDeadlock関数コールを送出するためのEvenReceiv er。 −対象の受信先について、個々のイベント発生器に対するモニタリング全ての リングを保持するMonItem 。 −ErItemを無効としたときに、ErItemのDistCatNodesリングからErItemを離脱 させるDistCatNode 。 −占有されているメモリをErItemが正しく戻すためのMemory。 −発生したタグがモニタリングと一致したとき、およびモニタリングをアップ デートおよび「ダウンデート(downdating)」するときのEventTag。 インターフェースのために、ErItemはEvent を用い、イベントを分配するとき に、対応するイベント受信先にこれを送出する。 第12図に戻ると、各ErItemオブジェクトは、クラスMonTem(モニタリング項 目)のオブジェクトのリストも保持する。このクラスは、個々のイベント発生器 のモニタリングを追跡するために用いられる。ブロック1228〜1238は、 各MonItem オブジェクトを示す。 第18図を参照すると、MonItem は個々のイベント発生器のモニタリングの内 部表現である。 MonItem は、次のものを継承する。 −ErItemがそのイベント受信先に対する個々のモニタリング全てを保持するリ ングのメンバとなることができるためのErMonLink 。 −MonItem のイベント発生リング、即ち、イベント発生器に対して行った個々 のモニタリング全てのリングのメンバとなることができるためのEgMonLink 。 実施のために、MonItem は次のクラスを用いる。 −イベント受信先へのポインタを保持するEritm に対するポインタを保持する ためのErItem。 −発生したイベント・タグとモニタリングが一致したとき、およびモニタリン グをアップデートおよび「ダウンデート」したときのEventTag。 −ErItemが、占有されているメモリを正しく戻すためのMemory。 第12図に戻ると、DistCatTree を通じて、全てのErItemに到達することが可 能である。オブジェクト1214のように、ツリーに含まれる各DistCatNode オ ブジェクトは、オブジェクト1202〜1206のような個々のイベント発生器 または分配カテゴリのいずれかのモニタリングを表わすために作成された、オブ ジェクト1216〜1220のようなErItem全てのリングを含む。第12図では 、リングは、ErItemオブジェクト1216〜1220を共に接続する矢印124 0,1242および1244によって示されている。1つのDistCatNode のリン クにおけるErItemは全て、同一分配カテゴリのイベント発生器に対するモニタリ ングの結果である。 通常、ErItemはリングにリンクされ、各リングはあるDistCatNode に属する。 リングは受信先の優先度にしたがって順序付けられる。ErItemが作成されるのは 、以前にモニタされたことがないイベント受信先に対するモニタリングが作成さ れたときである。次いで、ErItemを、モニタリングのイベント発生器の分配カテ ゴリに対応するDistCatNdeに属するErItemのリンクにリンクする。 ErItemはそれ自体に、receiveEventおよびHandlDeadlock 関数コールを送出す るための対応するイベント受信先(イベント受信先1208〜1212を参照の こと)に対するポインタ(ポインタ1212〜1226を参照のこと)を有する 。更に、各ErItemは、ErItemのDistCatNode のリングからの急速な離脱のために 、DistCatNode (ノード1214を参照のこと)へのポインタを有する。第12 図において、このようなポインタは、ErItem1216〜1220の各々から発す る共通矢印1246によって示されている。各ErItemはMonItem のリングである メンバも有する。ErItem1216に対して、このようなリングはMonItem 122 8〜1232を含み、矢印1248〜1252によって表されている。ErItem1 218に対して、リングはMonItem 1234および1236を含み、矢印125 4および1256によって表されている。ErItem1220の「リング」は単一の MonItem 1238を含み、矢印1258によって示されている。 MonItem 1228〜1238の各々は、個々のイベント発生器のモニタリング を表わす。したがって、MonItem 1228,1234および1238は、 MonItem 1228,1234,1238の各々から発する矢印1260によって 示されるイベント発生器1202のモニタリングを表わす。同様に、MonItem 1 230および1236は、MonItem 1230および1236の各々から発する矢 印1262によって示されるイベント発生器1204のモニタリングを表わし、 MonItem 1232は、矢印1264によって示されるイベント発生器1206の モニタリングを表わす。各場合において、モニタリング・イベント受信先は、Er Itemによって指し示される1箇所である。したがって、MonItem 1228,12 30および1232に対して、ErItem1216はイベント受信先1208を指し 示し、MonItem 1234および1236に対して、ErItem1218はイベント受 信先1210を指し示し、MonItem 1238に対して、ErItem1220はイベン ト受信先1212を指し示す。ErItemはMonItem(整列されていない)のそれら の各リングを保持し、イベント受信先が消滅したときに全てのモニタリングが適 正に除去されることを確実とする。 また、ErItemは、分配カテゴリのモニタリングも全て追跡する。これをどのよ うに行うかについては、後に説明する。 ErItemは、高速メモリ(クラスMemoryによって処理される)から割り当てられ たオブジェクトであるので、これらは、これらが割り当てられた元であり、これ らが無効とされたときに戻るべきメモリに対するポインタも保持する。 イベント発生器1202〜11206のような各イベント発生器はMonItem の リングを保持し、リング内の各リンクは、イベント発生器をイベントのソースと して、モニタリングに対応する。したがって、イベント発生器1202に対して 、MonItem 1228,1234および1238は、矢印1266,1268およ び1270によって示されるリング内に含まれる。イベント発生器1204に対 して、MonItem 1230および1236は、矢印1272および1274によっ て示されるリング内に含まれる。イベント発生器1206に対して、MonItem 1 232は、矢印1276によって示される「リング」内に含まれる。 また、各イベント発生器は、イベントの配置を進めるために、イベント・ハン ドラへのポインタも保持する。更に、イベント発生器が属する分配カテゴリを示 すDistCat タイプのメンバを有する。 既に述べたように、MonItem は、あるイベント受信先に対する、1つのイベン ト発生器の1つ以上のモニタリングを表わす。また、前述からも明白となってい るように、MonItem は2つのリングのメンバであり、一方のリング(受信先の優 先度によって順序付けられている)はイベント発生器に属し、他方のリング(順 序付けられていない)はモニタリング・イベント受信先(monitorings event rec eiver)に対応するErItemに属する。したがって、一例として、MonItem 1228 は、イベント受信先1208に対応するErItem1216に属するリング1248 ,1250,1252のメンバであるだけでなく、イベント発生器1202に属 するリング1266,1268,1270のメンバでもある。 各MonItem は、MonItem のErItemリングから急速に離脱するため、および分配 リストを構築する場合にイベント受信先を探し出すために、そのErItemへのポイ ンタを保持する。したがって、MonItem 1228,1230および1232は、 共通矢印1278によって示される、ErItem1216へのポインタを保持する。 MonItem1234および1236は、共通矢印1280によって示される、 ErItem1218へのポインタを保持し、MonItem 1238は、矢印1282によ って示される、ErItem1220へのポインタを保持する。また、各MonItem は、 発生器のMonItem のリングから急速に離脱するために、それぞれ矢印1260, 1262および1264によって示される、イベント発生器1202,1204 および1206それぞれへのポインタを含む。分配リストを急速に構築するため に、これらは、モニタするイベント受信先の優先度も含む。 MonItem は高速メモリ(クラスMemoryによって処理される)から割り当てられ るオブジェクトであるので、これらの割り当て元であり、これらが無効とされた 時にメモリを返すメモリへのポインタも保持する。 MonItem は、1つの発生器から1つの受信先へのイベントに対して行われる1 つ以上のモニタリングを表わす。MonItem オブジェクトがいくつのモニタリング を表わすのかを追跡するために、基準カウンタを含んでいる。 イベント・ハンドラは、イベント処理機構における中心的なオブジェクトであ り、全てのモニタリングを追跡する構造を維持する。DistCatTree はイベント・ ハンドラのメンバであり、モニタリングが作成されるときに、イベント・ハンド ラがあるイベント発生器または分配カテゴリに対応するErItemを見つけ出すため に用いられる。ErItemが見つからない場合、イベント・ハンドラは1つ作成し、 それをDistCatTree に挿入する。 イベント・ハンドラは、配置されたが分配されていない全イベントのリングを 保持する。即ち、イベントはイベント受信先に分配されるのを待っている。イベ ント受信先が消滅したとき、イベントを受信できない。したがって、この受信先 のために作成されたMonItem はそれ以上用いることはできない。しかしながら、 MonItem を指し示すMonitor オブジェクトが未だ存在し得るので、これらを削除 することはできない。基準カウントがゼロのMonItem が離脱され削除されたとき に、各ジョブの終了時にスキャンされる「消滅」MonItem のリストに、MonItem は移される。 受信先が消滅した場合、ErItemにとって、状況は殆ど同じである。ユーザはEr Itemを参照するMonitor オブジェクトを有している可能性があるので、ErItemを 直ちに無効とすることはできない。また、ErItemを参照する分配リストも存在す る可能性がある。分配リストに伴う問題に対処するため、受信先が消滅したとき に受信先へのErItemポインタを0に設定する。すると、ErItemはもはや受信先に イベントを全く送出しなくなる。各ジョブの終了時に、ゼロに等しい受信先ポイ ンタを有する全ErItemを「消滅」ErItemのリストに移動させる。基準カウントが ゼロのErItemが離脱され削除されたとき、このリストは各ジョブの終了時にスキ ャンされる。 イベント・オブジェクトは、発生したイベントのソフトウエアによる表現であ り、イベント受信先に送出される。イベントは、当該イベントが配置された元の イベント発生器へのポインタ、およびDistItemを含む分配リストを保持する。分 配リストは、イベントが配置されたときに構築され、各DistItemはErItemへのポ インタを含む。分配リストは、ErItemイベント受信先の優先度にしたがって順序 付けられる。各イベントは、イベント・タグも含む。 分配リストは、各イベントが配置されるとき、それに対して構築される。分配 リストはイベント・ハンドラによって構築され、イベント・ハンドラは内部構造 をスキャンしてイベントのイベント・タグと一致するMonItem およびErItemを探 す。分配リストは、DistItemの単独にリンクされたリストであり、各DistItemは ErItemへのポインタを含み、一方ErItemは分配時に当該イベントをそのイベント 受信先に転送する。 分配リストを構築するためには、イベントを配置したイベント発生器の分配カ テゴリに対応するErItemのリングを見つけなければならない。このリングは、Di stCatTree 内にノードによって保持されている。リングが見つからない場合、当 該イベントに対するモニタリングがないことになり、したがって破棄(削除)す ることができる。 更に、イベント発生器に対して行われたモニタリングを表わすMonItem のリン グが必要とされる。このリングは、イベント発生器によって保持される。 次に、これら2つのリングは、それぞれ、コールされたer-ring およびmon-ri ngの下でスキャンされ、両リングはイベント受信先の優先度にしたがって順序付 けられたものであることを考慮しつつ、メンバは配置されたイベントのタグと照 合される。 スキャニングは、mon-ringをスキャンして一致するMonItem を求めることによ って開始する。見つかった場合、現ErItemがMonItem によって指し示されるまで 、er-ring を進める。これを行いつつ、全ての一致したErItemを分配リストに集 める。MonItem によって指し示されているErItemは、次に分配リスト上に配され 、er-ring を1ステップ進めて、イベントが受信先に2回分配されるのを避ける 。上述のプロセスは、両リングを完全にスキャンするまで繰り返される。こうし て分配リストが完成し、イベントに与えられる。 配置された各イベントは、分配を待つリング上に配される。各イベントがそれ 自体の分配リストを有するので分配自体は非常に単純なため、分配は以下のステ ップに短縮される。イベント・リング上の各イベントに対して、イベントを除去 し、その分配リスト上の全受信先に分配する。各イベントの送出の間に、eventK illed フラグをチェックし、最後の受信先がKillEvent によって分配を停止した か否かを調べなければならない。この場合、分配は次のイベントを用いて続けら れる。 上述のように、ErItemは分配カテゴリに対するモニタリングを追跡し、MonIte m は個々のイベント発生器に対するモニタリングを追跡する。これは、ビットの アレイを保持することによって行われ、各ビットは1つのイベント・タグ に対応する。ビットは、モニタリングが作成されるときにセットされ、無効とさ れるときにクリアされる。イベント・タグは、パートおよびインデックスと呼ば れる、2つの構成要素から成り、パートはビットアレイの部分(第19図におけ る0,1,2,3を参照)を示し、インデックスは対応するパート内のどのビッ トがセットされたのかを示す。 例えば、イベント・タグ(0,9),(0,257)および(2,65)は、 第19図のビットアレイと一致する。 イベント・タグのインデックス構成要素の最下位ビットは常にセットされてい ることに注意されたい。これは、全イベントのモニタリングは常に一致しなけれ ばならないからである。例えば、第19図のビットアレイに、全イベントに対す るモニタリングを追加する場合、全パートにおける最後のビットをセットする( 第20図参照)。 したがって、イベントに対してイベント・タグを構成し、シーケンス(0,5 ),(0,9),...(0,231+1),(1,3),(1,5),...( 1,231+1),(2,3),(2,5),...(2,231+1),(3,3 ),(3,5),...(3,231+1)からそれらを選択する。しかしながら 、イベント・タグは、1つの整数をアーギュメントとして取り、0−>(0,5 ),1−>(0,9),2−>(0,17),等のマッピングを行うコンストラ クタ(constructor)を用いても構築可能である。また、パート0における1sb の直ぐ右のビットは、予め定義されている「消滅」イベント・タグ、即ち、タグ (0,3)のために保存されている。 関心のあるあらゆる受信先が、イベントを処理する前に当該イベントを削除し てしまうのを避けるために、これに対処する機構が導入されている。これは、イ ベント機構とThreadとの間の協働である。この機構は、イベント・ハンドラおよ びThreadによって増分および減分されるカウンタを有するイベントを基本とする 。カウンタが0まで減分されると、それ自体を削除する。配置されたイベントの イベント・ハンドラのリングから、次に分配する1つであるイベントを取り込む ときにブロック増分を行う場合。減分は、関心がある全受信先にイベントが分配 された直後に行われる。イベント・カウンタを増分するスレッドがない場合、イ ベ ントはそれ自体を削除する。 イベント受信先が無効とされた場合、それらを指し示すDistItemが存在し得る ので、対応するErItemを無効とすることはできない。また、ErItemを指し示すMo nitor オブジェクトも存在する可能性がある。イベント発生器が無効とされた場 合、それらを指し示すMonitor オブジェクトが存在し得るので、そのMonItem の リストを一掃することは不可能である。 これら2つの場合に対処するために、消滅を宣言されたオブジェクトの2つの リスト、DeadErListおよびDeadMonItemList があり、これらによって、当該オブ ジェクトはもはや使用しないが、他のいずれかのオブジェクトによって参照され ている可能性があるため、削除できないことを示す。DeadErListは、イベント受 信先を失ったErItemへのポインタを含み、LeadMonItemList は、イベント発生器 を失い、未だいずれかのMonitor オブジェクト(群)によって参照されているMo nItem 全てを含むリングである。 各ジョブの終了時に浄化(cleanup)を行い、これは以下のステップから成る。 まず、DeadErList上の各ErItemに対するMonItem のリングにおいて、基準カウ ントがゼロの各MonItem を削除し、その他については、DeadMonItemList に載せ る。 次に、ゼロに等しい基準カウントを有する全MonItem を離脱させ削除しつつ、 DeadMonItemList を最後まで進める。 最後に、基準カウントがゼロに等しい全ErItemを離脱させ削除しつつ、DeadEr Listを最後まで進める。

Claims (1)

  1. 【特許請求の範囲】 1.プロセスにおいて内部実行スレッドを管理するためのシステムであって、 前記実行スレッドは、発生した内部または外部インシデントに応答して、イベ ント発生関数(1202〜1206)によって発生される、プロセス内部イベン ト・メッセージによって駆動され、 前記内部イベント・メッセージは、優先度を有するイベント受信スレッド(1 208〜1212)に分配され、 前記分配は、前記イベント発生関数の分配カテゴリに基づいてイベント処理関 数によって制御され、かつ前記分配はかかる内部メッセージに関心があり、その 発生のモニタリングを行わせるイベント受信スレッドに対してのみ行われ、 各分配カテゴリに対して、 多数のイベント受信スレッドと、 あるイベント受信スレッドへの1つのイベント発生関数に対する1つ以上のモ ニタリングを表わす多数の第1の実体(1228〜1238)と、 分配カテゴリのイベント発生関数に対するモニタリングを表わす多数の第2の 実体(1216〜1220)であって、各々イベント受信スレッドをモニタした 第1の実体全てのリストを有する前記第2の実体と、 前記第2の実体(1216〜1238)のリストによって、分配カテゴリをモ ニタしたイベント受信スレッド全てを追跡する1つの第3の実体(1214)と 、 前記第1の実体(1228〜1238)のリストを各々保持する、多数のイベ ント発生関数とが存在する、 システム。 2.各第1の実体は、前記イベント発生関数へのポインタと、前記イベント受 信スレッドの優先度に関する情報を保持する請求項1記載のシステム。 3.各第2の実体は、1つ以上の前記第1の実体(1228〜1238)によ って指し示され、イベント受信スレッドへのポインタを保持し分配されたイベン ト・メッセージをそれに送出する請求項1または2記載のシステム。 4.前記第3の実体の前記第2の実体(1216〜1220)のリストは、前 記イベント受信スレッドを指し示す請求項1〜3のいずれかに記載のシステム。 5.各イベント発生関数は、イベントの送出のために、イベント処理関数への ポインタを保持する請求項1〜4のいずれかに記載のシステム。 6.前記イベント受信スレッドは各優先度指示と関連付けられており、プロセ スの実行中、前記第3の実体の前記第2の実体のリストは、現在のイベント受信 スレッドの優先度にしたがって、順序付けられる請求項1〜5記載のシステム。 7.第2の実体(1216〜1220)は、モニタリングが以前に行われてい ないイベント受信スレッドに対するモニタリングを作成するときに作成され、前 記第2の実体(1216〜1220)は、前記第3の実体(1214)に属する 前記第2の実体(1216〜1220)のリストに導入される請求項1〜5また は6記載のシステム。 8.各第2の実体は、前記第3の実体(1214)の第2の実体(1216〜 1220)のリストからの急速な除去を可能にするために、前記第3の実体(1 214)へのポインタを有する請求項1〜5または6または7記載のシステム。 9.第2の実体(1216〜1220)への前記第1の実体(1228〜12 38)のポインタは、前記第1の実体(1228〜1238)の前記第2の実体 (1216〜1220)のリストからの急速な除去を可能にするため、および分 配リストを構築するためのイベント受信スレッドを見つけ出すために保持され、 前記第1の実体のイベント発生関数へのポインタは、第1の実体(1228〜1 238)の前記イベント発生関数のリストからの急速な除去を可能にするために ある請求項1〜5または請求項6〜8のいずれか記載のシステム。 10.前記第1の実体(1228〜1238)は、高速メモリから割り当てら れたオブジェクトであり、それらが割り当てられた元であり、それらが除去され るときにそれらがメモリを戻す前記メモリへのポインタを保持する請求項1〜5 または請求項6〜9のいずれか記載のシステム。 11.前記第3の実体(1214)は、モニタリングが作成されるときに、前 記イベント処理関数によって、イベント発生関数または分配カテゴリに対応する 前記第2の実体(1216〜1220)を見つけるために用いられる請求項1〜 5または請求項6〜10のいずれか記載のシステム。 12.前記イベント処理関数は、配置されたが分配されていない全イベント、 即ち、前記イベント受信スレッドに分配されるのを待っているもののリストを保 持する請求項1〜5または請求項6〜11のいずれか記載のシステム。 13.各第1の実体(1228〜1238)は、それが表わすモニタリングを 登録するための基準カウンタを含む請求項1〜5または請求項6〜12のいずれ か記載のシステム。 14.基準カウントがゼロの第1の実体(1228〜1238)を除去し削除 するとき、前記処理におけるジョブの終了時にスキャンされる使用不可の第1の 実体のリストに、第1の実体を移動させる請求項13記載のシステム。 15.前記イベント受信スレッドが使用不可となり、前記第2の実体(121 6〜1220)がもはやいずれのイベントもそれに送出しない場合、前記第2の 実体(1216〜1220)のイベント受信スレッドへのポインタを0に設定す る請求項1〜5または請求項6〜14のいずれか記載のシステム。 16.各第2の実体は、それが表わすモニタリングを登録するための基準カウ ンタを含む請求項15記載のシステム。 17.前記処理におけるジョブの終了時に、イベント受信スレッドへのポイン タがゼロに設定されている第2の実体(1216〜1220)全てを、使用不可 の第2の実体(1216〜1220)のリストに移動し、基準カウントがゼロの 第2の実体(1216〜1220)をリストから除去し削除するときに、各ジョ ブの終了時に、前記リストをスキャンする請求項15および16記載のシステム 。 18.前記第2の実体(1216〜1220)は、高速メモリから割り当てら れたオブジェクトであり、それらが割り当てられた元であり、それらが無効とさ れるときにそれらがメモリを戻す前記メモリへのポインタを保持する請求項1〜 5または請求項6〜17のいずれか記載のシステム。 19.イベント受信スレッドに送出される発生イベントのソフトウエア表現(E vent)は各々、前記イベントが配置された元である前記イベント発生関数へのポ インタ、および1つのイベントの1つのイベント受信スレッドへの分配を表わす 分配項目(DistItem)を含む分配リストを保持する請求項1〜5または請求項6〜 18のいずれか記載のシステム。 20.前記分配リストは、前記イベントが配置されるときに構築され、各分配 項目は、第2の実体(1216〜1220)へのポインタを含み、前記分配リス トは、前記第2の実体(1216〜1220)のイベント受信スレッドの優先度 にしたがって順序付けられている請求項19記載のシステム。 21.各イベント表現は、どのイベント発生関数がそれを配置するかには無関 係に、1つのイベントのタイプを表わすイベント・タグを含む請求項19または 20記載のシステム。 22.前記分配リストは、前記プロセスの内部構造をスキャンし、前記イベン トのイベント・タグと一致する第1の実体(1228〜1238)および第2の 実体(1216〜1220)を見つけ出すための前記プロセスの内部構造をスキ ャンすることによって、前記イベント処理関数によって構築される請求項21記 載のシステム。 23.分配カテゴリに対するモニタリングを追跡する前記第2の実体(121 6〜1220)および、個々のイベント発生関数に対するモニタリングの追跡を 行う前記第1の実体(1228〜1238)は、ビットのアレイによって実行さ れ、各ビットは1つのイベント・タグに対応し、前記ビットは、モニタリングが 作成されるときにセットされ、それらが終了するときにクリアされ、各イベント ・タグは、前記ビットアレイのパートを示す1つと、前記対応するパートにおけ るどのビットがセットされているかを示すインデックスである1つとの2つの構 成要素から成る請求項21または22記載のシステム。 24.各関心のあるイベント受信スレッドがイベントを処理する前に当該イベ ントを削除するのを回避するために、前記イベント処理関数およびスレッドによ って、各イベントに対応するカウンタを増分および減分するステップを含み、前 記カウンタは、それが0に減分されたときにそれ自体を削除し、前記イベント処 理関数の配置したイベントのリストから、分配すべき次の1つであるイベントを 取り込んだときに、増分を実行し、関心のあるイベント受信スレッド全てに前記 イベントが分配された直後に減分を実行する、請求項1〜5または請求項6〜2 3のいずれか記載のシステムにおける方法。 25.各ジョブの後に第1および第2の実体を削除するために、 前記使用不可の第2の実体のリスト(deadErList)上の各第2の実体(121 6〜1220)に対して、その第1の実体(1228〜1238)のリストを識 別し、基準カウントがゼロの各第1の実体を削除し、その他の場合、前記使用不 可の第1の実体のリストに配するステップと、 前記使用不可の第1の実体のリスト上において、基準カウントがゼロに等しい 全実体を識別し、それらを除去し削除するステップと、 前記使用不可の第2の実体のリスト上において、基準カウントがゼロに等しい 全実体を識別し、それらを除去し削除するステップと、 を含む、請求項17〜24のいずれか記載のシステムにおける方法。 26.分配リストを構築するために、 前記イベントを配置する前記イベント発生関数の分配カテゴリに対応する第2 の実体(1216〜1220)のリストを識別するステップと、 前記イベント発生関数に対して行われるモニタリングを表わす前記第1の実体 (1228〜1238)のリストを識別するステップと、 このように識別された前記2つのリストをスキャンしながら、それらのメンバ を、前記配置されたイベントのタグと照合するステップと、 を含む請求項19〜23のいずれか記載のシステムにおける方法。 27.前記スキャンは、 一致する第1の実体(1228〜1238)のために前記第1の実体のリスト をスキャンするステップと、見つかった場合、 前記見つかった第1の実体(1228〜1238)によって指し示されている 現在の第2の実体(1216〜1220)を見つけるために、前記第2の実体の リストをスキャンしつつ、一致する第2の実体全てを前記分配リストに集め、一 致する各実体に対して、前記第2の実体のリストをポインタを1ステップ歩進さ せ、前記イベントが2度前記イベント受信スレッドに分配されるのを避けるステ ップと、 両リストが完全にスキャンされるまで繰り返すステップと、 こうして完成した前記分配リストを、前記イベントに与えるステップと、 から成る請求項26記載の方法。 28.分配は、 各配置されたイベントを分配待ちリストに配するステップと、 前記リスト上の各イベントを除去し、前記イベントの分配リスト上にあるイベ ント受信スレッド全てにそれを分配するステップと、 各イベント送出の間に、最後のイベント受信スレッドが分配を停止したか否か をチェックするステップと、 を含む請求項26または27記載の方法。
JP8517543A 1994-12-09 1995-12-08 内部実行スレッド管理方法 Pending JPH10510641A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9404294A SE9404294D0 (sv) 1994-12-09 1994-12-09 sätt och anordning vid telekommunikation
SE9404294-2 1994-12-09
PCT/SE1995/001480 WO1996018148A1 (en) 1994-12-09 1995-12-08 A system for managing internal execution threads

Publications (1)

Publication Number Publication Date
JPH10510641A true JPH10510641A (ja) 1998-10-13

Family

ID=20396280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8517543A Pending JPH10510641A (ja) 1994-12-09 1995-12-08 内部実行スレッド管理方法

Country Status (14)

Country Link
US (1) US5961584A (ja)
EP (1) EP0796462B1 (ja)
JP (1) JPH10510641A (ja)
KR (1) KR100421797B1 (ja)
CN (1) CN1096027C (ja)
AT (1) ATE223083T1 (ja)
AU (1) AU695271B2 (ja)
BR (1) BR9509892A (ja)
CA (1) CA2206835A1 (ja)
DE (1) DE69527978T2 (ja)
FI (1) FI972406A (ja)
NO (1) NO972596L (ja)
SE (1) SE9404294D0 (ja)
WO (1) WO1996018148A1 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320216A (ja) * 1997-05-14 1998-12-04 Sony Corp コンピュータ読み取り可能な記録媒体
JP3883647B2 (ja) * 1997-06-10 2007-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体
EP0926908A1 (en) * 1997-12-24 1999-06-30 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Timeout handler in a service control point
US6094663A (en) * 1998-03-31 2000-07-25 Apple Computer, Inc. Method and apparatus for implementing atomic queues
US7216348B1 (en) * 1999-01-05 2007-05-08 Net2Phone, Inc. Method and apparatus for dynamically balancing call flow workloads in a telecommunications system
US6920475B1 (en) * 1999-04-23 2005-07-19 Oracle International Corporation Communication architecture for distributed computing environment
US6505382B1 (en) 1999-05-14 2003-01-14 Apple Computer, Inc. Hinge apparatus with cam mechanism
US6604125B1 (en) 1999-09-24 2003-08-05 Sun Microsystems, Inc. Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment
US6701367B1 (en) 1999-09-24 2004-03-02 Sun Microsystems, Inc. Mechanism for enabling customized session managers to interact with a network server
US6766349B1 (en) 1999-09-24 2004-07-20 Sun Microsystems, Inc. Mechanism for obtaining a thread from, and returning a thread to, a thread pool without attaching and detaching
US6629142B1 (en) 1999-09-24 2003-09-30 Sun Microsystems, Inc. Mechanism for optimizing processing of client requests
US6542920B1 (en) * 1999-09-24 2003-04-01 Sun Microsystems, Inc. Mechanism for implementing multiple thread pools in a computer system to optimize system performance
US6895584B1 (en) 1999-09-24 2005-05-17 Sun Microsystems, Inc. Mechanism for evaluating requests prior to disposition in a multi-threaded environment
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6823524B1 (en) * 1999-10-13 2004-11-23 Avaya Technology Corp. System and method for managing the distribution of events in a data processing system
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6951018B2 (en) * 2000-05-30 2005-09-27 Sun Microsystems, Inc. Method and apparatus for efficiently tracking monitors
US6918114B2 (en) * 2001-04-05 2005-07-12 International Business Machines Corporation Method, apparatus, and program to keep a JVM running during the shutdown process of a Java based server executing daemon threads
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
US7694304B2 (en) * 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050066302A1 (en) * 2003-09-22 2005-03-24 Codito Technologies Private Limited Method and system for minimizing thread switching overheads and memory usage in multithreaded processing using floating threads
US7451444B2 (en) * 2003-09-30 2008-11-11 Sas Institute Inc. Computer-implemented system and method for managing service agents
US7278133B2 (en) * 2004-07-23 2007-10-02 Ntt Docomo, Inc. Index-based parameter access and software for using the same
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US7552153B2 (en) * 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7933947B2 (en) * 2004-12-28 2011-04-26 Sap Ag Connection manager that supports failover protection
US7500133B2 (en) * 2004-12-28 2009-03-03 Sap Ag Connection manager for handling message oriented protocol-based requests
US7539821B2 (en) 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
US7672949B2 (en) * 2004-12-28 2010-03-02 Sap Ag Connection manager having a common dispatcher for heterogeneous software suites
KR100645537B1 (ko) * 2005-02-07 2006-11-14 삼성전자주식회사 안정적인 패킷 포워딩을 위한 동적인 큐 관리방법 및 이를위한 네트워크 프로세서의 구성요소
US7577657B2 (en) * 2005-03-18 2009-08-18 Microsoft Corporation System and method for updating objects in a multi-threaded computing environment
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US7689660B2 (en) * 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US7793299B2 (en) * 2005-08-30 2010-09-07 International Business Machines Corporation System and method for scheduling tasks for execution
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
EP2030112A2 (en) * 2006-06-06 2009-03-04 Siemens Energy & Automation, Inc. Runtime extension framework
US20090172007A1 (en) * 2007-12-31 2009-07-02 Jonathan Ding Implementing applications with a data model comprising content, thread and category
US8032716B2 (en) * 2008-02-26 2011-10-04 International Business Machines Corporation System, method and computer program product for providing a new quiesce state
US8849631B2 (en) * 2008-05-13 2014-09-30 International Business Machines Corporation Protocol independent telephony call lifecycle management scheme
US8572617B2 (en) * 2009-07-21 2013-10-29 Sas Institute Inc. Processor-implemented systems and methods for event handling
US8769211B2 (en) * 2009-12-22 2014-07-01 Intel Corporation Monitoring thread synchronization in a distributed cache
CN101980167B (zh) * 2010-10-19 2013-02-06 上海富士施乐有限公司 一种任务状态机管理机制运行的方法
US9513961B1 (en) * 2014-04-02 2016-12-06 Google Inc. Monitoring application loading
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
CN105094967B (zh) * 2015-06-26 2019-04-16 小米科技有限责任公司 进程运行方法及装置
DE102016200777A1 (de) * 2016-01-21 2017-07-27 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem
CN106598751B (zh) * 2016-10-31 2020-02-07 武汉斗鱼网络科技有限公司 通过事件总线分发事件的方法及系统
CN116737670B (zh) * 2023-08-11 2023-11-17 英诺达(成都)电子科技有限公司 Upf文件的删除方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63208948A (ja) * 1987-02-26 1988-08-30 Toshiba Corp マルチプロセツサシステムにおけるタスクスケジユ−リング方式
EP0381655A3 (en) * 1989-01-31 1992-12-02 International Business Machines Corporation Method for synchronizing the dispatching of tasks among multitasking operating systems
US5057996A (en) * 1989-06-29 1991-10-15 Digital Equipment Corporation Waitable object creation system and method in an object based computer operating system
ATE167582T1 (de) * 1989-09-08 1998-07-15 Digital Equipment Corp Privatspeicher für fäden in einem multifaden digitalen datenverarbeitungssystem
US5377191A (en) * 1990-10-26 1994-12-27 Data General Corporation Network communication system
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
EP0537721B1 (en) * 1991-10-15 1998-11-25 Hewlett-Packard Company Hardware-configured operating system kernel for a multitasking processor
DK192491D0 (da) * 1991-11-26 1991-11-26 Stig Magnar George B Harlequin Anordning til parallel-kobling af datamater
JPH07104791B2 (ja) * 1991-12-18 1995-11-13 インターナショナル・ビジネス・マシーンズ・コーポレイション タスク状態構築方法
US5517636A (en) * 1992-01-07 1996-05-14 Unisys Corporation Platform independent data communication system and method
SE500940C2 (sv) * 1993-02-10 1994-10-03 Ellemtel Utvecklings Ab Sätt och system för att i ett distribuerat operativsystem demontera en kedja av sammanlänkade processer
JP3349547B2 (ja) * 1993-05-10 2002-11-25 株式会社日立製作所 スケジューリングシステム
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
SE502733C2 (sv) * 1993-06-11 1995-12-18 Ellemtel Utvecklings Ab Sätt att undvika ej önskvärd interferens mellan tjänster i ett telekommunikationssystem
US5421013A (en) * 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
WO1997018661A1 (en) * 1995-11-13 1997-05-22 Answersoft, Inc. Intelligent information routing system and method
US6247675B1 (en) * 1999-05-18 2001-06-19 Four Paws Products, Ltd. Display hanger for a dog leash

Also Published As

Publication number Publication date
EP0796462A1 (en) 1997-09-24
SE9404294D0 (sv) 1994-12-09
FI972406A0 (fi) 1997-06-06
BR9509892A (pt) 1997-12-30
AU695271B2 (en) 1998-08-13
ATE223083T1 (de) 2002-09-15
DE69527978D1 (de) 2002-10-02
DE69527978T2 (de) 2003-01-09
NO972596D0 (no) 1997-06-06
NO972596L (no) 1997-07-17
EP0796462B1 (en) 2002-08-28
AU4276996A (en) 1996-06-26
MX9703999A (es) 1997-09-30
FI972406A (fi) 1997-08-05
CN1169192A (zh) 1997-12-31
CN1096027C (zh) 2002-12-11
US5961584A (en) 1999-10-05
KR987000610A (ko) 1998-03-30
WO1996018148A1 (en) 1996-06-13
KR100421797B1 (ko) 2004-05-20
CA2206835A1 (en) 1996-06-13

Similar Documents

Publication Publication Date Title
JPH10510641A (ja) 内部実行スレッド管理方法
JP3782477B2 (ja) オペレーティングシステムのシステム管理のためのイベントアーキテクチャ
US7221377B1 (en) Apparatus and method for collecting and displaying information in a workflow system
US7739325B1 (en) Apparatus and method for extensible real-time workflows
US7856498B2 (en) Collaborative alert management and monitoring
US6134313A (en) Software architecture for a computer telephony system
US20040148299A1 (en) Automated workflow composable action model
JPH03194647A (ja) 故障通告方法
US6118862A (en) Computer telephony system and method
JP3236006B2 (ja) 非手続言語を用いたリアルタイム状態制御法とその装置
US6532498B1 (en) Method and system for event notification between software application program objects
US20040202165A1 (en) Message processing apparatus, method and program
US7950011B2 (en) Leveraging advanced queues to implement event based job scheduling
EP0787396A1 (en) Parallel execution of requests in osi agents
GB2390776A (en) Method and apparatus for automated network polling
US6823524B1 (en) System and method for managing the distribution of events in a data processing system
US6938251B1 (en) Deferred-Synchronous messaging software in a non-threaded environment
JPH09160847A (ja) クライアント・サーバ型分散処理システム
MXPA97003999A (en) A system to manage internal filaments of execuc
JP3495017B2 (ja) エージェント協調処理装置
Kim et al. Modeling of a real-time distributed network management based on TMN and the TMO model
CN114936074A (zh) 一种基于事件驱动和Reactor模式的实现动态业务管线的方法
CN113141387A (zh) 业务订阅方法、装置及系统
EP0902366A2 (en) System of propagating a command status code from a remote unit to a host unit
KR20000046239A (ko) 처리기한에 따른 데이터 처리 순서에 의한 실시간 다중처리 시스템