JP2010204874A - スレッド制御システム、方法及びプログラム - Google Patents

スレッド制御システム、方法及びプログラム Download PDF

Info

Publication number
JP2010204874A
JP2010204874A JP2009048715A JP2009048715A JP2010204874A JP 2010204874 A JP2010204874 A JP 2010204874A JP 2009048715 A JP2009048715 A JP 2009048715A JP 2009048715 A JP2009048715 A JP 2009048715A JP 2010204874 A JP2010204874 A JP 2010204874A
Authority
JP
Japan
Prior art keywords
thread
initialization
processing information
initialization processing
setting
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
JP2009048715A
Other languages
English (en)
Inventor
Kazuto Ichimura
和人 市村
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009048715A priority Critical patent/JP2010204874A/ja
Publication of JP2010204874A publication Critical patent/JP2010204874A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】呼び出し元のスレッドから起動されるスレッドに対して、初期化処理を柔軟に設定すること。
【解決手段】本発明にかかるスレッド制御システムは、第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信手段と、第1のスレッドとは異なる第2のスレッドに対して、指定された初期化処理情報を設定する設定手段と、第2のスレッドの起動時に、設定された初期化処理情報に基づき第2のスレッドに初期化処理を実行させるスレッド実行手段と、を備える。
【選択図】図1

Description

本発明は、スレッド制御システム、方法及びプログラムに関し、特に、スレッドから呼び出されるスレッドにおける初期化処理を制御するためのスレッド制御システム、方法及びプログラムに関する。
マルチスレッドは、一つのソフトウェア上で同時に複数の処理を実行させるための技術である。図7は、マルチスレッドが利用されるクライアント/サーバアプリケーションシステムの例を示す図である。サーバアプリケーション72は、クライアントアプリケーション71からの複数の処理要求をマルチスレッドにより実現する。サーバアプリケーション72は、データ受信部721と、処理ディスパッチ部722と、スレッドを実行する処理実行部723及び724とを備える。
このようなクライアント/サーバアプリケーションシステムの動作例を以下に説明する。クライアントアプリケーション71は、サーバアプリケーション72に接続し、実行したい処理を送信する。
また、サーバアプリケーション72は、次のように動作する。まず、データ受信部721は、クライアントアプリケーション71からの接続を待つ。次に、データ受信部721は、クライアントアプリケーション71から接続された後に、クライアントアプリケーション71から送信される処理を受信する。そして、データ受信部721は、受信した処理を処理ディスパッチ部722へ送信する。
続いて、処理ディスパッチ部722は、スレッドを作成し、クライアントアプリケーション71から受信した処理を格納する。そして、処理ディスパッチ部722は、作成したスレッドとクライアントアプリケーション71から受信した処理とを処理実行部723及び724に設定する。その後、処理実行部723及び724は、処理ディスパッチ部722に設定された処理を基にスレッドを開始する。
このように、上述したサーバアプリケーション72は、スレッドを作成し、クライアントアプリケーション71から受信した処理を格納した後に、スレッドを開始する。つまり、サーバアプリケーション72は、クライアントアプリケーション71から要求される処理をスレッドに設定するものである。
また、複数のスレッドを初期化する技術として、次のものがある。
特許文献1には、競合を低減したマルチスレッドシステムのメッセージ格納構造内のメッセージへアクセスするための方法及び装置に関する技術が開示されている。特に、特許文献1にかかる方法及び装置における各子プロセスは、新規アクティブ接続スレッドを初期化する初期化スレッドを有する。
特許文献2には、コンピュータ等でプロセスを処理する場合に、プロセスを構成する複数のスレッドのうちの一つで異常が発生したときに、その異常を早期に発見し、かつ、プロセスを復旧させるマルチスレッドの監視方法に関する技術が開示されている。特許文献2では、プロセス内のプライマリスレッドが、当該プロセスを構成する複数のスレッドの動作をポーリングにより監視する。ここで、各スレッドにおいて異常が発生すると、当該スレッドは、プライマリスレッドの問い合わせ信号に対し、応答信号を返すことができない。応答信号の有無に基づき、プライマリスレッドは、各スレッドの動作が正常か否かを判断する。異常が発生したと判断すると、プライマリスレッドは、全てのスレッドの動作を終了させ、かつ、初期化を行う。
特許文献3には、対称型マルチプロセッサシステム上で共用メモリに載せたデータを複数のブロックに分け複数のクイックソート処理スレッドを利用して並列にクイックソートを行う並列クイックソート装置、方法及びプログラムに関する技術が開示されている。特許文献3にかかる技術では、スレッドプールに複数のクイックソート処理スレッドを用意し、初期化処理手段が該スレッドの初期化処理を行う。
特開2000−224251号公報 特開平11−232143号公報 特許第3975975号公報
上述したように特許文献1では、初期化スレッドが同一プロセス内の他のスレッドの初期化処理を行う。また、特許文献2では、プライマリスレッドが同一プロセス内の他のスレッドの初期化処理を行う。また、特許文献3では、初期化手段が、複数のクイックソート処理スレッドの初期化処理を行う。しかしながら、特許文献1乃至3に開示された技術は、スレッドから呼び出されるスレッドに対して、初期化処理を柔軟に設定できないという問題点がある。それは、スレッドを初期化するための初期化スレッド、プライマリスレッド又は初期化手段というものが固定的に存在するためである。
尚、スレッドには、呼び出し元のスレッドが明示的に作成するスレッドの他に、スレッドプールや非同期実行スレッドが存在する。呼び出し元のスレッドが明示的に作成するスレッドについては、スレッド作成後、かつ、スレッド起動前に呼び出し元のスレッドが初期化を行うことも考えられる。しかし、スレッドプールや非同期実行スレッドではスレッド管理システムが使用するスレッドを決定し起動するため、起動前に初期化を行うことができない。また、呼び出し元のスレッドは、スレッド処理の先頭に初期化を行う処理を含めることも可能だが、スレッド処理ごとに初期化処理を記述する必要があり、実装が煩雑及び非効率である。
本発明は、このような問題点を解決するためになされたものであり、呼び出し元のスレッドから起動されるスレッドに対して、初期化処理を柔軟に設定することができるスレッド制御システム、方法及びプログラムを提供することを目的とする。
本発明の第1の態様にかかるスレッド制御システムは、第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信手段と、前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定手段と、前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行手段と、を備える。
本発明の第2の態様にかかるスレッド制御方法は、第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信ステップと、前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定ステップと、前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行ステップと、を含む。
本発明の第3の態様にかかるスレッド制御プログラムは、第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信ステップと、前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定ステップと、前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行ステップと、を含むスレッド制御処理をコンピュータに実行させる。
本発明によれば、呼び出し元のスレッドから起動されるスレッドに対して、初期化処理を柔軟に設定することができるスレッド制御システム、方法及びプログラムを提供することができる。
本発明の実施の形態1にかかるスレッド制御システムの構成を示すブロック図である。 本発明の実施の形態2にかかるスレッド制御システムの構成を示すブロック図である。 本発明の実施の形態2にかかるスレッド設定処理の流れを示すフローチャート図である。 本発明の実施の形態2にかかるスレッド実行処理の流れを示すフローチャート図である。 本発明の実施の形態3にかかるスレッド制御システムの構成を示すブロック図である。 本発明の実施の形態3にかかるスレッド設定処理の流れを示すフローチャート図である。 関連技術にかかるクライアント/サーバアプリケーションシステムの構成を示すブロック図である。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかるスレッド制御システムの構成を示すブロック図である。スレッド制御システム100は、汎用的なコンピュータシステム(不図示)上で動作するスレッド制御プログラムである。スレッド制御システム100は、例えば、当該コンピュータシステム上で動作するオペレーティングシステム、オペレーティングシステム上で動作するミドルウェア、オペレーティングシステム又はミドルウェア上で動作するアプリケーションソフトウェアにおいて利用されるものである。
第1のスレッド201及び第2のスレッド202は、それぞれ上述したコンピュータシステム上で実行されるスレッドである。ここで、スレッドとは、ソフトウェアの実行単位である。スレッドは、同一プロセス内に複数存在することができる。複数のスレッドは、同一メモリ空間上で実行できる。そのため、複数のスレッドに処理を分散実行させることで、メモリ消費量などを軽減できる。
スレッド制御システム100は、第1のスレッド201からの要求を受け付け、第2のスレッド202の実行を制御するものである。スレッド制御システム100は、受信手段101と、設定手段102と、スレッド実行手段103とを備える。
受信手段101は、第1のスレッド201から、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する。設定手段102は、受信手段101とは異なる設定手段102に対して、第1のスレッド201により指定された初期化処理情報を設定する。スレッド実行手段103は、第2のスレッド202の起動時に、設定手段102により設定された初期化処理情報に基づき、第2のスレッド202に初期化処理を実行させる。
このように、本発明の実施の形態1にかかるスレッド制御システム100によれば、呼び出し元のスレッドである第1のスレッド201において、第2のスレッド202で実行させるための任意の初期化処理情報を指定することにより、第2のスレッド202の起動時の初期化処理を柔軟に制御することができる。
<発明の実施の形態2>
図2は、本発明の実施の形態2にかかるスレッド制御システムの構成を示すブロック図である。スレッド制御システム300は、図1のスレッド制御システム100と同等の機能に加え、スレッドプール30を備える。
スレッドプール30は、スレッド制御システム100の起動時に作成されたスレッド31、スレッド32、・・・、及びスレッド3n(nは、1以上の整数)をプールする格納領域である。スレッドプール30は、例えば、スレッド制御システム300が動作するコンピュータシステム(不図示)内のメモリ内に割り当てられた記憶領域である。スレッドプール30は、スレッド制御システム300からの割り当て要求に応じて、使用可能なスレッドにリソースを割り当てる。このとき、スレッドプール30は、当該割り当てたスレッドのステータスを使用中とし、以後の要求に割り当てないように管理する。また、スレッドプール30は、割り当てたスレッドについてのリソースの解放要求に応じて、当該スレッドのリソースを解放し、当該スレッドのステータスを使用可能とする。
スレッド31は、スレッド制御システム100内に定義された所定のスレッドクラス(不図示)をインスタンス化したオブジェクトである。スレッド31は、親スレッド情報311、初期化処理アドレス312、スレッド処理アドレス313を含む。スレッド31は、例えば、任意のスレッドクラスを継承し、親スレッド情報311、初期化処理アドレス312、スレッド処理アドレス313をフィールドとして実装されたサブクラスのインスタンスである。親スレッド情報311は、スレッド31の呼び出し元のスレッドを識別する識別情報を格納する変数である。親スレッド情報311は、例えば、呼び出し元のスレッドのインスタンスへの参照情報である。初期化処理アドレス312は、スレッドを初期化するための処理である初期化処理への参照先情報を格納する変数である。初期化処理アドレス312は、例えば、初期化処理が実装された関数へのポインタである。スレッド処理アドレス313は、スレッド31に実行させるための処理であるスレッド処理への参照先情報を格納する変数である。スレッド31は、例えば、スレッド処理が実装された関数へのポインタである。
また、スレッド32、・・・、及びスレッド3nは、スレッド31と同様のスレッドクラスから生成されたインスタンスであり、スレッド31と同様の構成を有するため、詳細な説明及び図示を省略する。
ここで、呼び出し元スレッド21の備える親スレッド情報211、初期化処理アドレス212及びスレッド処理アドレス213、並びに、対象スレッド22の備える親スレッド情報221、初期化処理アドレス222及びスレッド処理アドレス223は、スレッド31の備える親スレッド情報311、初期化処理アドレス312及びスレッド処理アドレス313と同等のものであるため、説明を省略する。
呼び出し元スレッド21は、スレッド制御システム300とは異なるプログラム上で動作するスレッドのオブジェクトである。呼び出し元スレッド21は、スレッド制御システム300に対して、スレッド処理を行わせるスレッドの割り当て要求又は新規作成要求を送信する。その際、呼び出し元スレッド21のスレッド処理アドレス213には、予め、当該スレッド処理への参照先情報が格納されている。また、呼び出し元スレッド21は、少なくとも1つ以上のスレッドに当該スレッド処理を行わせるものである。または、呼び出し元スレッド21は、複数のスレッド処理を複数のスレッドに実行させるように、スレッドの割り当て要求又は新規作成要求を送信しても構わない。
また、呼び出し元スレッド21は、他のスレッドから呼び出されたスレッドであっても構わない。その場合、呼び出し元スレッド21の親スレッド情報211には、呼び出し元スレッド21の呼び出し元のスレッドの識別情報が格納されている。
そして、呼び出し元スレッド21は、スレッドの割り当て要求又は新規作成要求を送信する際に、当該要求するスレッドに実行させる初期化処理への参照先情報を初期化処理アドレス212に格納する。初期化処理アドレス212に格納されるアドレスは、例えば、呼び出し元スレッド21自身の初期化処理であってもよい。
対象スレッド22は、呼び出し元スレッド21からの要求に応じて、スレッド制御システム300によりスレッド処理を実行するために設定されたスレッドのオブジェクトである。また、対象スレッド22は、複数存在しても構わない。対象スレッド22は、実行するスレッド処理によっては、呼び出し元スレッド21として動作しても構わない。すなわち、対象スレッド22は、さらに他のスレッドへスレッド処理を実行させるように、スレッドの割り当て要求又は新規作成要求を送信しても構わない。尚、呼び出し元スレッド21及び対象スレッド22は、スレッド制御システム300内で動作するスレッドであっても構わない。
つまり、本発明の実施の形態2にかかるスレッド制御システム300は、呼び出し元スレッド21から初期化処理の指定を受信し、スレッドプール30の中から取得することにより又は新規作成することにより対象スレッド22を設定するスレッド設定処理と、対象スレッド22に当該指定された初期化処理を実行させるスレッド実行処理とを行う。
図3は、本発明の実施の形態2にかかるスレッド制御システム300におけるスレッド設定処理の流れを示すフローチャート図である。まず、スレッド制御システム300は、呼び出し元スレッド21からスレッド処理を行わせるスレッドの割り当て要求又は新規作成要求を受信する(S11)。
次に、スレッド制御システム300は、受信した要求が割り当て要求であるか否かを判定する(S12)。受信した要求が割り当て要求であると判定された場合、スレッド制御システム300は、スレッドプール30から使用可能なスレッドを取得し、対象スレッド22とする(S13)。また、ステップS12において、受信した要求が割り当て要求でないと判定された場合、スレッド制御システム300は、新規にスレッドを作成し、当該作成されたスレッドを対象スレッド22とする(S14)。
続いて、スレッド制御システム300は、呼び出し元スレッド21の初期化処理アドレス212に設定があるか否かを判定する(S15)。すなわち、スレッド制御システム300は、初期化処理アドレス212を参照し、初期化処理への参照先情報が格納されているか否かを判定する。
ステップS15において、設定があると判定された場合、スレッド制御システム300は、呼び出し元スレッド21の初期化処理アドレス212に格納された参照情報を対象スレッド22の初期化処理アドレス222に設定する(S16)。
また、ステップS15において、設定がないと判定された場合、スレッド制御システム300は、対象スレッド22の初期化処理アドレス222に格納された情報をクリアする(S17)。
尚、ステップS16及びS17のいずれの処理であっても、スレッド制御システム300は、対象スレッド22の親スレッド情報221に呼び出し元スレッド21の識別情報を格納する。また、このとき併せて、スレッド制御システム300は、呼び出し元スレッド21のスレッド処理アドレス213に格納されている参照情報を対象スレッド22のスレッド処理アドレス223に格納する。その後、スレッド制御システム300は、対象スレッド22を起動する(S18)。
図4は、本発明の実施の形態2にかかるスレッド実行処理の流れを示すフローチャート図である。まず、スレッド制御システム300は、起動した対象スレッド22の初期化処理アドレス222に設定があるか否かを判定する(S21)。すなわち、スレッド制御システム300は、スレッド制御システム300は、初期化処理アドレス222を参照し、初期化処理への参照先情報が格納されているか否かを判定する。
ステップS21において、設定があると判定された場合、スレッド制御システム300は、対象スレッド22の初期化処理アドレス222に対応する初期化処理を対象スレッド22にて実行する(S22)。すなわち、スレッド制御システム300は、対象スレッド22の初期化処理アドレス222に格納された参照情報を取得し、当該参照情報の参照先の初期化処理を対象スレッド22に対して実行する。また、ステップS21において、設定がないと判定された場合、スレッド制御システム300は、対象スレッド22の初期化処理を実行しない。
その後、スレッド制御システム300は、対象スレッド22のスレッド処理アドレス223に対応する処理を対象スレッド22にて実行する(S23)。すなわち、スレッド制御システム300は、対象スレッド22のスレッド処理アドレス223に格納された参照情報を取得し、当該参照情報の参照先のスレッド処理を対象スレッド22に対して実行する。
このように、本発明の実施の形態2では、呼び出し元スレッド21の初期化処理アドレス212に格納された参照情報の初期化処理を呼び出し元スレッド21の起動時に実行された初期化処理とする。これにより、対象スレッド22において、親スレッドと共通の初期化処理を行うことができる。つまり、スレッドが複数及び多段に分散されていても親スレッドの情報を引き継ぐことができるという効果を奏する。そのため、親スレッドから子スレッドへ、子スレッドから孫スレッドへと情報を引き継ぐことで再帰的に引き継ぐことができる。
また、本発明の実施の形態2にかかるスレッド制御システム300は、呼び出し元スレッド21の初期化処理アドレス212に設定された初期化処理情報を指定として受信し、対象スレッド22に対して、呼び出し元スレッド21に設定された初期化処理情報を設定する。これにより、親スレッドの設定を通して初期化処理を引き継ぐことができる。
例えば、WCF(Windows(登録商標) Communication Foundation)などのフレームワークを使用した場合、フレームワークからスレッド処理が起動されるため、呼び出し元のスレッドを識別することもできなくなる。さらに、フレームワークでスレッド処理に必要とされる引数などが決められているため、追加で初期化情報を渡すこともできない。これに対して、本発明の実施の形態2では、呼び出し元スレッド21が隠ぺいされていても、対象スレッド22の初期化処理を呼び出すことができるという効果を奏する。その理由は、フレームワークが呼び出すスレッド処理に対しても初期化処理を適用できるためである。また、フレームワーク内で使用されるスレッド数に依らない。
また、スレッド制御システム300は、対象スレッド22に対して、呼び出し元スレッド21を呼び出し元のスレッドとしてさらに設定することにより、対象スレッド22の親スレッド情報221から親スレッドを参照できる。
さらに、スレッド制御システム300は、呼び出し元スレッド21の初期化処理アドレス212に初期化処理情報が設定されていない場合に、対象スレッド22の初期化処理アドレス222をクリアし、対象スレッド22の起動時に、対象スレッド22に初期化処理を実行させないことにより、初期化処理を実行しないことを指定することができ、不要な処理コストを抑えることができる。
また、本発明の実施の形態2では、フレームワークによりスレッド処理の引数があらかじめ決められていても初期化処理を行うことができるという効果を奏する。その理由は、スレッド処理の引数とは別に初期化処理を適用できるためである。さらに、本発明の実施の形態2では、初期化処理を一元化できるという効果を奏する。その理由は、個々のスレッドの処理とは切り離して設計できるためである。
<発明の実施の形態3>
図5は、本発明の実施の形態3にかかるスレッド制御システムの構成を示すブロック図である。図5に示すスレッド制御システム301は、図2のスレッド制御システム300に加え、グローバル格納領域30aが追加されたものである。尚、図5の内、図2と同一の構成要素には、同一の符号を付し、詳細な説明は、省略する。
グローバル格納領域30aは、スレッドを初期化するための処理である初期化処理への参照先情報を格納する変数である。言い換えると、グローバル格納領域30aは、初期化処理情報を格納する処理情報格納手段である。また、グローバル格納領域30aは、初期化処理アドレス312と異なり、スレッド制御システム300内のあらゆる処理から参照可能な領域である。そのため、例えば、呼び出し元スレッド21を実行する前に、予め外部からグローバル格納領域30aに所定の初期化処理アドレスを格納することができる。
図6は、本発明の実施の形態3にかかるスレッド設定処理の流れを示すフローチャート図である。尚、図6の内、図3と同一の構成要素には、同一の符号を付し、詳細な説明は、省略する。以下では、図3との違いを中心に説明する。まず、前提として、スレッド制御システム301は、予め外部から入力された初期化アドレスをグローバル格納領域30aに格納済みである。また、ステップS11乃至S15は、図3と同様の処理である。
ここで、ステップS15において、設定がないと判定された場合、スレッド制御システム301は、グローバル格納領域30aに初期化処理アドレスの設定があるか否かを判定する(S15a)。すなわち、スレッド制御システム301は、グローバル格納領域30aを参照し、初期化処理への参照先情報が格納されているか否かを判定する。
ステップS15aにおいて、設定があると判定された場合、スレッド制御システム301は、グローバル格納領域30aに格納された参照情報を対象スレッド22の初期化処理アドレス222に設定する(S16a)。
また、ステップS15aにおいて、設定がないと判定された場合、スレッド制御システム301は、対象スレッド22の初期化処理アドレス222に格納された情報をクリアする(S17)。
また、ステップS16aの処理後は、ステップS16又はS17と同様に、スレッド制御システム301は、対象スレッド22の親スレッド情報221に呼び出し元スレッド21の識別情報を格納する。また、このとき併せて、スレッド制御システム301は、呼び出し元スレッド21のスレッド処理アドレス213に格納されている参照情報を対象スレッド22のスレッド処理アドレス223に格納する。その後、スレッド制御システム301は、対象スレッド22を起動する(S18)。続いて、スレッド制御システム301は、対象スレッド22に対して、図4と同様のスレッド実行処理を行う。
つまり、スレッド制御システム301は、呼び出し元スレッド21の初期化処理アドレス212に初期化処理アドレスが設定されておらず、グローバル格納領域30aに初期化処理アドレスが設定されている場合を、呼び出し元スレッド21から処理情報格納手段に格納された初期化処理情報を指定されたものとして受信する。そして、スレッド制御システム301は、対象スレッド22に対して、処理情報格納手段に格納された初期化処理情報を設定する。これにより、複数の対象スレッド22に対して、共通の初期化処理を一回の設定により指定可能となる。また、この場合、都度、呼び出し元スレッド21において、初期化処理アドレス212に初期化処理アドレスを設定する必要がなく実装が効率的となる。
<その他の発明の実施の形態>
尚、スレッドプールに格納されたスレッドは、既に起動されているために、従来は、クライアントアプリケーション71から受信した処理を格納することができず、サーバアプリケーション72においてはスレッドプールが使用できない問題があった。本発明は、スレッドプールに格納されたスレッドが初期化処理アドレス312を有するため、割り当てられたスレッドの実行開始時に初期化処理アドレス312に設定された初期化処理を実行させることが可能となる。
尚、本発明にかかるスレッド制御システムは、オペレーティングシステムやスレッドライブラリに利用可能である。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
100 スレッド制御システム
101 受信手段
102 設定手段
103 スレッド実行手段
201 第1のスレッド
202 第2のスレッド
21 呼び出し元スレッド
211 親スレッド情報
212 初期化処理アドレス
213 スレッド処理アドレス
22 対象スレッド
221 親スレッド情報
222 初期化処理アドレス
223 スレッド処理アドレス
300 スレッド制御システム
301 スレッド制御システム
30 スレッドプール
30a グローバル格納領域
31 スレッド
311 親スレッド情報
312 初期化処理アドレス
313 スレッド処理アドレス
32 スレッド
3n スレッド
71 クライアントアプリケーション
72 サーバアプリケーション
721 データ受信部
722 処理ディスパッチ部
723 処理実行部
724 処理実行部

Claims (18)

  1. 第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信手段と、
    前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定手段と、
    前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行手段と、
    を備えるスレッド制御システム。
  2. 前記初期化処理情報を格納する処理情報格納手段をさらに備え、
    前記受信手段は、前記第1のスレッドから前記処理情報格納手段に格納された初期化処理情報を前記指定として受信し、
    前記設定手段は、前記第2のスレッドに対して、前記処理情報格納手段に格納された初期化処理情報を設定する、
    ことを特徴とする請求項1に記載のスレッド制御システム。
  3. 前記指定された初期化処理情報は、前記第1のスレッドの起動時に実行された初期化処理であることを特徴とする請求項1又は2に記載のスレッド制御システム。
  4. 前記受信手段は、前記第1のスレッドに設定された初期化処理情報を前記指定として受信し、
    前記設定手段は、前記第2のスレッドに対して、前記第1のスレッドに設定された初期化処理情報を設定する、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のスレッド制御システム。
  5. 前記設定手段は、前記第1のスレッドに前記初期化処理情報が設定されていない場合に、前記第2のスレッドの初期化処理アドレスをクリアし、
    前記スレッド実行手段は、前記第2のスレッドの起動時に、前記第2のスレッドに初期化処理を実行させない、
    ことを特徴とする請求項4に記載のスレッド制御システム。
  6. 前記設定手段は、前記第2のスレッドに対して、前記第1のスレッドを呼び出し元のスレッドとしてさらに設定することを特徴とする請求項1乃至5のいずれか1項に記載のスレッド制御システム。
  7. 第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信ステップと、
    前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定ステップと、
    前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行ステップと、
    を含むスレッド制御方法。
  8. 前記初期化処理情報を格納する処理情報格納ステップをさらに含み、
    前記受信ステップは、前記第1のスレッドから前記処理情報格納ステップに格納された初期化処理情報を前記指定として受信し、
    前記設定ステップは、前記第2のスレッドに対して、前記処理情報格納ステップにより格納された初期化処理情報を設定する、
    ことを特徴とする請求項7に記載のスレッド制御方法。
  9. 前記指定された初期化処理情報は、前記第1のスレッドの起動時に実行された初期化処理であることを特徴とする請求項7又は8に記載のスレッド制御方法。
  10. 前記受信ステップは、前記第1のスレッドに設定された初期化処理情報を前記指定として受信し、
    前記設定ステップは、前記第2のスレッドに対して、前記第1のスレッドに設定された初期化処理情報を設定する、
    ことを特徴とする請求項7乃至9のいずれか1項に記載のスレッド制御方法。
  11. 前記設定ステップは、前記第1のスレッドに前記初期化処理情報が設定されていない場合に、前記第2のスレッドの初期化処理アドレスをクリアし、
    前記スレッド実行ステップは、前記第2のスレッドの起動時に、前記第2のスレッドに初期化処理を実行させない、
    ことを特徴とする請求項10に記載のスレッド制御方法。
  12. 前記設定ステップは、前記第2のスレッドに対して、前記第1のスレッドを呼び出し元のスレッドとしてさらに設定することを特徴とする請求項7乃至11のいずれか1項に記載のスレッド制御方法。
  13. 第1のスレッドから、スレッドを初期化するための処理への参照先情報である初期化処理情報の指定を受信する受信ステップと、
    前記第1のスレッドとは異なる第2のスレッドに対して、前記指定された初期化処理情報を設定する設定ステップと、
    前記第2のスレッドの起動時に、前記設定された初期化処理情報に基づき前記第2のスレッドに初期化処理を実行させるスレッド実行ステップと、
    を含むスレッド制御処理をコンピュータに実行させるスレッド制御プログラム。
  14. 前記初期化処理情報を格納する処理情報格納ステップをさらに備え、
    前記受信ステップは、前記第1のスレッドから前記処理情報格納ステップに格納された初期化処理情報を前記指定として受信し、
    前記設定ステップは、前記第2のスレッドに対して、前記処理情報格納ステップにより格納された初期化処理情報を設定する、
    ことを特徴とする請求項13に記載のスレッド制御プログラム。
  15. 前記指定された初期化処理情報は、前記第1のスレッドの起動時に実行された初期化処理であることを特徴とする請求項13又は14に記載のスレッド制御プログラム。
  16. 前記受信ステップは、前記第1のスレッドに設定された初期化処理情報を前記指定として受信し、
    前記設定ステップは、前記第2のスレッドに対して、前記第1のスレッドに設定された初期化処理情報を設定する、
    ことを特徴とする請求項13乃至15のいずれか1項に記載のスレッド制御プログラム。
  17. 前記設定ステップは、前記第1のスレッドに前記初期化処理情報が設定されていない場合に、前記第2のスレッドの初期化処理アドレスをクリアし、
    前記スレッド実行ステップは、前記第2のスレッドの起動時に、前記第2のスレッドに初期化処理を実行させない、
    ことを特徴とする請求項16に記載のスレッド制御プログラム。
  18. 前記設定ステップは、前記第2のスレッドに対して、前記第1のスレッドを呼び出し元のスレッドとしてさらに設定することを特徴とする請求項13乃至17のいずれか1項に記載のスレッド制御プログラム。
JP2009048715A 2009-03-03 2009-03-03 スレッド制御システム、方法及びプログラム Pending JP2010204874A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009048715A JP2010204874A (ja) 2009-03-03 2009-03-03 スレッド制御システム、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009048715A JP2010204874A (ja) 2009-03-03 2009-03-03 スレッド制御システム、方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2010204874A true JP2010204874A (ja) 2010-09-16

Family

ID=42966303

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009048715A Pending JP2010204874A (ja) 2009-03-03 2009-03-03 スレッド制御システム、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2010204874A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204875A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp スレッドのスケジュール方式
JP2001166950A (ja) * 1999-12-07 2001-06-22 Matsushita Electric Ind Co Ltd 割り込み管理装置及び割り込み管理方法
JP2007504535A (ja) * 2003-08-28 2007-03-01 ミップス テクノロジーズ インコーポレイテッド マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204875A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp スレッドのスケジュール方式
JP2001166950A (ja) * 1999-12-07 2001-06-22 Matsushita Electric Ind Co Ltd 割り込み管理装置及び割り込み管理方法
JP2007504535A (ja) * 2003-08-28 2007-03-01 ミップス テクノロジーズ インコーポレイテッド マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令

Similar Documents

Publication Publication Date Title
US9501319B2 (en) Method and apparatus for scheduling blocking tasks
WO2020211579A1 (zh) 一种基于分布式批量处理系统的处理方法、装置及系统
US11941434B2 (en) Task processing method, processing apparatus, and computer system
US9778962B2 (en) Method for minimizing lock contention among threads when tasks are distributed in multithreaded system and apparatus using the same
CN105786603B (zh) 一种基于分布式的高并发业务处理系统及方法
WO2009147802A1 (ja) 優先度制御装置及び優先度制御方法
US9348658B1 (en) Technologies for efficient synchronization barriers with work stealing support
CN111026541B (zh) 渲染资源调度方法、装置、设备及存储介质
WO2013091219A1 (zh) 并发任务的处理方法及装置
US10067793B2 (en) Data processing method and apparatus for executing task code using reservation instruction and release instruction
US9158588B2 (en) Flexible task and thread binding with preferred processors based on thread layout
US9832137B1 (en) Provisioning system and method for a distributed computing environment using a map reduce process
US8977752B2 (en) Event-based dynamic resource provisioning
JP2011044110A (ja) ソフトウェアプログラム実行装置、ソフトウェアプログラム実行方法、及びプログラム
CN104702534A (zh) 一种实现多进程共享端口的数据处理的方法及装置
US7007004B2 (en) Concurrent operation of a state machine family
US20030018682A1 (en) Computer system and computer-readable record medium
US9690748B1 (en) Delivering notifications to background applications
US8788601B2 (en) Rapid notification system
CN108833532B (zh) 基于物联网的服务处理方法、装置和系统
US20220188153A1 (en) System and method of executing task of operating system for vehicle
JP2010204874A (ja) スレッド制御システム、方法及びプログラム
US20220350666A1 (en) Resource allocation method, device and audio-visual playback terminal
CN108089919B (zh) 一种并发处理api请求的方法及系统
JP2017033095A (ja) 情報処理システム、情報処理方法、プログラム、及び情報処置装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20120210

Free format text: JAPANESE INTERMEDIATE CODE: A621

A977 Report on retrieval

Effective date: 20130703

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20130806

Free format text: JAPANESE INTERMEDIATE CODE: A131

A02 Decision of refusal

Effective date: 20131203

Free format text: JAPANESE INTERMEDIATE CODE: A02