(57)【要約】【課題】      分散処理時のデッドロックを防止することにある。【解決手段】  委託元マシン１の命令中継スレッド１３１は、第１の命令の発生時、ロックをかけるが、委託先の処理を待つ必要がある命令の場合には、ロックを解放し、委託先マシン２に中継する。委託先マシン２のイベント処理スレッド２１１は、イベント処理の過程で新たな第２の命令が発生したとき、委託元マシン１の命令処理スレッド１３３に送信する。この委託元マシン１の命令処理スレッド１３３は、第２の命令を受信すると、排他用ロックしてから処理し、排他用ロックの解放後に委託先イベント処理スレッド２１１に処理終了を送信する。よって、委託元マシン２のロックが解除されているので、委託先マシン２から新たな第２の命令が発生しても委託元マシン１はデッドロックを容易に回避できる。【選択図】図８
2008146674.tif 000002
【特許請求の範囲】
【請求項１】
命令委託元マシンとイベント処理機能をもつ命令委託先マシンがネットワークを介して接続されている自動分散処理システムにおいて、
前記命令委託元マシンは、排他用ロック後のアプリケーション処理時に第１の命令が発生したとき、その命令内容に応じて前記ロックを解放し前記第１の命令を前記委託先マシンの命令処理スレッドに送信する手段およびこの命令処理スレッドにおける命令処理の終了を受けて第１の命令を終了する手段とを有する委託元命令中継スレッドと、前記委託先マシンのイベント処理スレッドから送信されてくる第２の命令を排他用ロックを行ってから処理し、排他用ロックを解放してから前記委託先イベント処理スレッドに対して前記第２の命令処理の終了を送信する委託元命令処理スレッドとを備え、
前記命令委託先マシンは、前記命令中継スレッドから第１の命令を受信したとき、排他用ロックを行って当該第１の命令を処理し、ロックを解放した上でイベント処理スレッドからの再開依頼がなされるまで待機し、再開後、前記第１の命令処理終了を前記委託元命令中継スレッドに委託し、前記待機中の前記命令委託先マシンに再開依頼を通知する前記委託先命令処理スレッドと、排他用ロックを行って自身のイベント処理時に第２の命令が発生した場合は、前記委託元命令処理スレッドに委託し、当該委託元命令処理スレッドからの前記第２の命令の終了を受けてロックを解放し、スレッド再開通知を必要とするイベントが発生した場合、前記待機中の前記命令委託先命令処理スレッドに再開依頼を通知する前記委託先イベント処理スレッドとを備えたことを特徴とする自動分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理の分散化により発生するデッドロックを回避する自動分散処理システムに関する。
【背景技術】
【０００２】
一般に、自動分散処理システムは、本来単独のマシン上で実行されるべき処理の一部を他のマシンに委託し、処理の分散化を図るシステムである。  
このような自動分散処理システムでは、本来単独のスレッドまたはプロセスにより行うべき処理が委託元と委託先とに分散されるので、排他的機能が働き、本来の動作とは異なるものとなってしまい、いわゆるデッドロックを発生する。
【０００３】
以下、デッドロックの発生について図９を参照して説明する。  
今、委託元マシン１においてアプリケーションの実行時、命令中継スレッド（ユーザスレッド）１３１が委託先マシン２に委託するための命令を発生すると、その命令を委託先マシン２に中継する。従って、委託元シン１は、この段階では図示点線矢印のごとく委託処理待ちの状態となる。
【０００４】
一方、委託先マシン２の命令処理スレッド２１３は、委託元マシン１から委託される命令を受信し、その命令を処理するが、この命令処理の過程で別の命令が発生し、委託元マシン１の命令処理スレッド１３３に委託する必要が生じたとき、その別の命令を委託元マシン１に送信する。従って、委託先マシン２は、この段階では図示点線矢印のごとく委託処理待ちの状態となる。つまり、両マシン１，２は何れも命令処理待ちの状態となっている。
【０００５】
しかし、別の命令を受信した委託元マシン１では、既に自身のアプリケーション処理時に排他用ロックをかけた状態となっており、待ちの状態にあるので、委託先マシン２から委託した別の命令を処理できない状態にあり、委託元マシン１ではデッドロックが発生する。つまり、両マシン１，２とも委託された命令を処理できない状態が発生する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、以上のような自動分散処理システムにおいては、次のような問題が生ずる。
【０００７】
その１つは、委託先マシン２の処理部から排他用処理部分を除去することが考えられるが、それでは委託先マシン２の処理部をそのまま生かしつつ使用することができない問題がある。また、委託先マシン２の処理部の実装内容をマシン開発者から取得した上、排他部分を回避する考えもあるが、常にマシン開発者から実装内容を取得できるとは限らず、仮に取得したとしても排他機能を完全に回避できるとは言い難い。
【０００８】
また、他の１つは、ある命令を委託元マシン１から委託先マシン２に委託したとしても、前述するように当該命令内において委託先マシン２が委託元マシン１に別の命令を委託するといった，命令の入れ子が生じたとき、別の命令を行う委託元マシン１００のスレッドが排他対象となってしまい、委託元マシン１側で排他管理ができなくなる問題がある。
【０００９】
本発明は、上記事情にかんがみてなされたものであって、処理の分散化により発生するデッドロックを確実に回避する自動分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明に係る自動分散処理システムは、命令委託元マシンとイベント処理機能をもつ命令委託先マシンがネットワークを介して接続されている自動分散処理システムであって、
前記命令委託元マシンは、排他用ロック後のアプリケーション処理時に第１の命令が発生したとき、その命令内容に応じて前記ロックを解放し前記第１の命令を前記委託先マシンの命令処理スレッドに送信する手段およびこの命令処理スレッドにおける命令処理の終了を受けて第１の命令を終了する手段とを有する委託元命令中継スレッドと、前記委託先マシンのイベント処理スレッドから送信されてくる第２の命令を排他用ロックを行ってから処理し、排他用ロックを解放してから前記委託先イベント処理スレッドに対して前記第２の命令処理の終了を送信する委託元命令処理スレッドとを備え、
前記命令委託先マシンは、前記命令中継スレッドから第１の命令を受信したとき、排他用ロックを行って当該第１の命令を処理し、ロックを解放した上でイベント処理スレッドからの再開依頼がなされるまで待機し、再開後、前記第１の命令処理終了を前記委託元命令中継スレッドに委託し、前記待機中の前記命令委託先マシンに再開依頼を通知する前記委託先命令処理スレッドと、排他用ロックを行って自身のイベント処理時に第２の命令が発生した場合は、前記委託元命令処理スレッドに委託し、当該委託元命令処理スレッドからの前記第２の命令の終了を受けてロックを解放し、スレッド再開通知を必要とするイベントが発生した場合、前記待機中の前記命令委託先命令処理スレッドに再開依頼を通知する前記委託先イベント処理スレッドとを備えた構成である。
【００１１】
この発明は以上のような構成とすることにより、命令の内容によって例えばダイアログ表示命令などのときはロックを開放し、命令を相手マシンに中継するので、相手マシンによるダイアログ処理終了の受信後にロックを取得し命令を終了させることができる。
【発明の効果】
【００１２】
本発明によれば、通常実行時、排他的ロックを取得して処理を行った後、排他的ロックを解放し、その後、特定の命令が行われるまで命令発行元スレッドが待機するといった性質をもつ命令を行った場合のデッドロックも確実に防止できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の一実施の形態について図面を参照して説明する。
【００１４】
図１は本発明に係るＧＵＩ等の処理を行う自動分散処理システムの一実施の形態を示す構成図である。
【００１５】
このシステムは、例えばＧＵＩの表示処理部分等を委託する委託元マシン１と、この委託元マシン１から委託される表示処理を実行する委託先マシン２とによって構成されている。
【００１６】
この委託元マシン１は、ＧＵＩ等に関する一連の処理を規定するアプリケーション１１と、このアプリケーション１１とリンクして動作する上位ライブラリ１２と、この上位ライブラリ１２からの命令を委託先マシン２に中継する命令中継ライブラリ１３とからなり、一方、委託先マシン２は、命令中継ライブラリ１３からの命令を処理する命令実行モジュール２１と、この命令実行モジュール２１とリンクして動作する前記委託元上位ライブラリ１２との互換性をもっている上位ライブラリ２２と、この上位ライブラリ２２とリンクして動作する下位ライブラリ２３とからなる。
【００１７】
なお、委託元マシン１および委託先マシン２にはそれぞれデッドロック防止のためのプログラムを記録した記録媒体１４，２４が設けられている。この記録媒体１４，２４は、一般的にはＣＤ−ＲＯＭや磁気ディスク等が用いられるが、それ以外にも例えば磁気テープ、ＤＶＤ−ＲＯＭ、フロッピー（登録商標）のディスク、ＭＯ、ＣＤ−Ｒ、メモリカードなどを用いてもよい。
【００１８】
この委託元マシン１の命令中継ライブラリ１３は、委託元下位ライブラリ２３と互換性を有し、具体的には上位ライブラリ１２からの命令を命令実行モジュール２１に中継する命令中継スレッド１３１、委託先マシン側の命令実行モジュール２１からの命令を処理するスレッドを検索し命令を振り分ける命令振り分けスレッド１３２、この命令振り分けスレッド１３２からの命令を上位ライブラリ１２に渡して処理する命令処理スレッド１３３、スレッド識別子を用いてスレッドを管理するスレッド管理テーブル１３４、処理が終了し解放された命令処理スレッド１３３を管理する解放済スレッド蓄積部１３５等によって構成されている。
【００１９】
前記委託先マシン２の命令実行モジュール２１は、委託先下位ライブラリ２２からの命令を命令中継ライブラリ１３に中継する命令中継スレッド２１１、委託元命令中継ライブラリ１３からの命令を処理するスレッドを検索し命令を振り分ける振り分けスレッド２１２、この振り分けスレッド２１２からの命令を上位ライブラリ２２に渡して処理する命令処理スレッド２１３、スレッド識別子を用いてスレッドを管理するスレッド管理テーブル２１４、処理が終了し解放された委託先命令スレッド２１３を管理する解放済スレッド蓄積部２１５等によって構成されている。
【００２０】
図２は一般的にアプリケーションを実行する場合のモジュールの概略構成図である。
【００２１】
すなわち、実行マシン１００は、アプリケーション１１０、このアプリケーション１１０とリンクして動作する上位ライブラリ１２０と、この上位ライブラリ１２０とリンクして動作する下位ライブラリ１３０とを有し、当該アプリケーション１１０を実行するが、例えばＧＵＩ等の処理を行なうアプリケーション１１を実行する場合、下位ライブラリ１３０部分を、当該下位ライブラリ１３０と互換性のある命令中継ライブラリ１３に入れ替え、処理の自動分散化を図っている。
【００２２】
次に、以上のような自動分散処理システムに関し、特にデッドロック防止の一連の処理について図３を参照して説明する。なお、委託元命令中継スレッド１３１と委託先命令中継スレッド２１１、委託元命令振り分けスレッド１３２と委託先命令振り分けスレッド２１２とはそれぞれ同様な処理を行なうので、説明の便宜上，片方の処理フローは省略する。
【００２３】
命令中継ライブラリ１３は上位ライブラリ１２０から命令を受けると、記録媒体１４に記録されるプログラムを読み取り、次のような処理を実行する。
【００２４】
今、委託元マシン１においてアプリケーション１１の実行時に上位ライブラリ１２を通して命令が発生すると（Ｓ１）、ユーザスレッド等の命令中継スレッド１３１は、その命令処理用スレッドがスレッド管理テーブル１３４内に登録されているか否かを調べ（Ｓ２）、登録されていない場合には当該スレッド管理テーブル１３４に登録し（Ｓ３）、次のステップＳ４に移行する。既にスレッドが登録されている場合にも同様にステップＳ４に移行する。このステップＳ４では、命令に発行元のスレッド識別子を付加し、委託先マシン２の命令振り分けスレッド２１２に中継するとともに、自身を受信待ちの状態に設定する。これらステップＳ１〜Ｓ４は命令を中継する機能である。
【００２５】
ここで、委託先マシン２の命令振り分けスレッド２１２は、命令を処理するスレッド側のスレッド識別子がスレッド管理テーブル２１４に登録されているか否かを判断し（Ｓ５１）、登録されていなければ解放済スレッド蓄積部２１５にスレッドが有るか否かを調べ（Ｓ５２）、スレッドが無ければ新たに識別子とともにスレッドを作成し（Ｓ５３）、スレッド識別子と命令処理スレッドとを組としてスレッド管理テーブル２１４に登録後（Ｓ５４）、その命令処理スレッド２１３に命令を渡す（Ｓ５５）。ステップＳ５２において解放済スレッドがある場合もステップＳ５４を介して命令処理スレッドに命令を渡す。これらステップＳ５１〜Ｓ５５は命令処理用スレッドを作成し命令を渡す機能である。
【００２６】
命令処理スレッド２１３は、上位ライブラリ２２とリンクして処理動作を実行するが、このとき処理が終了する場合と処理の過程で別命令が発生する場合があるので、別命令発生か否かを判断し（Ｓ５６）、別命令発生の場合には前述した委託元マシン１から受信した識別子を付けて別命令を委託元マシン１の命令振り分けスレッド１３２に送出する。この時、委託先マシン側の識別子を付けて送信してもよい。また、別命令の有無を判断し、別命令無しの場合には上位ライブラリ２２とリンクしながら該当命令の処理が終了したかを判断し（Ｓ５７）、処理終了の場合には該当命令終了の返信に同じく委託元マシン１から受け取った識別子を付けて委託元マシン１の命令振り分けスレッド１３２に送出する（Ｓ５８）。
【００２７】
委託元マシン１の命令振り分けスレッド１３２は、識別子とともに委託先の別命令または処理終了による返信を受け取ると、識別子から委託元である命令中継スレッド１３１に処理を委託する。この命令中継スレッド１３１は、命令に対する返信か、別命令かを判断（Ｓ６）、返信の場合には終了し、別命令の場合には上位ライブラリ１２に別命令を発行し、処理を行なう（Ｓ７）。ここで、別命令の処理が終了すれば、別命令に対する処理終了の返信を委託先側発行元のスレッド識別子とともに委託先マシン２の命令振り分けスレッド２１２に送信する（Ｓ８）。
【００２８】
従って、以上のような実施の形態によれば、デッドロックを容易に回避可能である。
【００２９】
すなわち、ある命令が委託元マシン１から委託先マシン２に行われ、この命令内で呼ばれる委託先上位ライブラリ２２内から更に別命令が委託元マシン１に委託されると、図９に示すごとく命令の入れ子が行われ、デッドロックが発生する。
【００３０】
しかし、本実施の形態では、委託先で別の命令が発生したとき、委託元から既に命令委託のときに受け取っているスレッド識別子を別命令とともに返すので、委託元マシンでは委託元のスレッドが判明でき、この委託元である命令中継スレッド１３１はロットをかけているが、命令に伴う別命令であることがスレッド識別子からわかるので、処理の自動分散化を行なわない場合と同様に確実にデッドロックを回避できる。
【００３１】
図４は図９とは異なる別のデッドロック発生例を説明するための図である。
【００３２】
このシステムは、通常のアプリケーション実行時における委託元マシン１のユーザスレッド等の命令中継スレッド１３１と委託先マシン２のイベント処理スレッド（命令中継スレッド）２１１とで同一の排他用ロックを同時に取得しようとするアプリケーションの例である。
【００３３】
この場合、命令中継スレッド１３１がロックをかけて委託元アプリケーションの処理時に命令Ａが発生したとき、その命令Ａを委託先マシン２の命令処理スレッド２１３に中継し、処理待ちの状態に入る。一方、イベント処理スレッド２１１においても、ロックをかけた状態でのイベント処理時に命令Ｂが発生したとき、その命令Ｂを委託元マシン１の命令処理スレッド１３３に中継し、処理待ちの状態に入る。しかし、これらマシン１，２はそれぞれ時間をずらして各命令を相手マシン２，１に命令を委託する場合には特に問題が生じないが、両マシン１，２が同時に命令が発生した場合には互いにロックを取得し合えない状態となり、デッドロックが発生する。
【００３４】
図５は図４に示すデッドロックを回避するための自動分散処理システムの構成例図である。
【００３５】
今、委託元マシン１において命令中継スレッド１３１は、ロックをかけて委託元アプリケーション処理時に命令Ａが発生すると（Ｓ１１）、命令Ａを中継し（Ｓ１２）、委託先マシン２の命令処理スレッド２１２に送信する。このステップＳ１１，Ｓ１２は命令中継機能である。
【００３６】
この命令処理スレッド２１２は、命令Ａを受信すると（Ｓ６１）、自身のマシンに対するロックが取得可能か否かを判断する（Ｓ６２）。ステップＳ６１，Ｓ６２はロック取得判断機能である。ロック取得不可であれば、委託元マシ１にリトライするよう通知する（Ｓ６３：リトライ通知機能）。ロックを取得可能であれば、ロックをかけて命令Ａを処理し（Ｓ６４）、命令処理終了後にその命令Ａを終了した旨を返信し（Ｓ６５）、ロックを解放する。ステップＳ６４，Ｓ６５は命令処理機能である。
【００３７】
一方、委託元マシン１の命令中継スレッド１３１では、命令Ａを中継した後（Ｓ１２）、受信待ちの状態に入る（Ｓ１３）。命令Ａ中継後、リトライ用の通知があったとき（Ｓ１４）、ロックを一時解放し（Ｓ１５）、ロックの再取得を命令Ａ中継に指示する（Ｓ１６）。これらステップＳ１３〜Ｓ１６は命令中継リトライ機能である。
【００３８】
また、命令中継スレッド１３１では、委託先マシン２の命令処理スレッド２１２からの命令処理返信の有無を判断し（Ｓ１７）、処理終了であればロックを解放し、命令処理を終了する（Ｓ１８）。
【００３９】
なお、委託先マシン２によるイベント処理時に命令Ｂが発生したとき、命令Ｂを中継し、委託元マシン１の命令処理スレッド１３２に送信する。この命令処理スレッド１３２は、ロックを取得し命令Ｂを処理し、命令処理終了後に返信する構成とするが、例えば委託先マシン２の命令処理スレッド２１２と同様な構成であってもよい。また、委託先マシン２の命令中継スレッド２１１についても、委託元マシン１の命令中継スレッド１３１と同様な構成であってもよい。
【００４０】
従って、以上のような実施の形態によれば、委託先マシン２が委託元マシン１から命令を受信したとき、自身マシンのロックを取得できるか判断し、ロック取得不可の場合に委託元マシン１のリトライを通知し、再度当該命令の中継を促すので、デッドロックを容易に回避できる。
【００４１】
一般に、デッドロックの回避手段としては、最初の命令を中継するとき、排他用ロックを無条件に解放することも考えられるが、もともとアプリケーションが排他用ロック取得状態にて実行している命令内であるので、不用意に排他用ロックを解放すると、排他機能が働かず、予期せぬ不適合が発生する可能性がある。
【００４２】
そこで、本システムにおいては、委託元マシン１上の排他機能をできる限り生かし、例外的にデッドロックの危険性が有るときだけ、デッドロックを回避するものである。
【００４３】
次に、図６および図７にて更に別のデッドロックの発生例について述べる。
【００４４】
例えば同一マシン上，つまり委託元マシン１または委託先マシン２において処理画面上のあるアイコンをマウス等でクリックしダイアログ表示命令を出し、マウスイベント等に伴うダイアログボックス（イベント処理スレッド）を生成したとき、そのダイアログボックスが閉じるまで待機状態にある場合のデッドロック発生例である。
【００４５】
先ず、入力イベント待ちダイアログ表示の際の実行マシン１００の通常実行動作は、図６に示すようにダイアログ表示命令が発生する（Ｓ２１）、排他用ロックを取得し、ダイアログを表示した後（Ｓ２２）、そのダイアログ表示の旨をイベント処理スレッドに通知する（Ｓ２３）。この通知後、排他用ロックを解放し（Ｓ２４）、待機状態とする（Ｓ２５）。つまり、一度ロックを取得するが、ダイアログ表示の旨を通知した後、ロックを解放し、待機状態にする。
【００４６】
一方、イベント処理スレッドでは、ダイアログ表示の通知を受信すると、ダイアログ表示通知有りと判断し（Ｓ７１）、ダイアログ管理部に登録するが（Ｓ７２）、ダイアログ表示通知無しの場合には、管理中ダイアログの非表示イベントであるか否かを判断し（Ｓ７３）、非表示の場合にはユーザスレッドの待機中スレッドを起こし（Ｓ７４）、ダイアログの非表示イベントでない場合にはロックを取得し、イベント処理を行ない、その処理終了後にロックを解放する（Ｓ７５）。
【００４７】
ステップＳ７４においてダイアログ非表示イベントに入った際、待機中に合ったスレッドを再開し、ロックを取得する（Ｓ２６）。
【００４８】
従って、以上のような同一マシン上での通常実行時、互いに相手のスレッドを調べながらロックをかけたり、ロックを解放しているので、デッドロックの発生がない。
【００４９】
しかしながら、以上のようなダイアログの表示技術に関し、本発明に係る自動分散処理システムに適用すると、図７に示すようにデッドロックが発生する。
【００５０】
すなわち、委託元マシン１における委託元アプリケーションの処理時、命令中継スレッド１３１は、ダイアログ表示命令Ａ発生後、ロックをかけた後、命令Ａを委託先マシン２の命令処理スレッド２１３に送信した後、命令処理待ちの状態に入る。
【００５１】
一方、委託先マシン２の命令処理スレッド２１３は、命令Ａを受信した後、命令Ａを処理する。つまり、ロックをかけて図６のユーザスレッドの処理を行ない、ロック解放、待機を行う。
【００５２】
ところが、委託先マシン２の命令中継スレッド２１１においては、同様にイベント処理時に命令Ｂが発生したとき、命令Ｂを委託元マシン１の命令処理スレッド１３３に送信するので、命令Ｂを受信した命令処理スレッド１３３では、命令Ｂを受信するが、ロックがかかった状態にあるので、デッドロックが発生する。つまり、委託先マシン２上のイベント処理スレッド２１１のイベント処理中に排他用ロックを取得しようとした場合、イベント処理スレッドの動作が停止してしまい、デッドロックが発生する。
【００５３】
図８は図7に示すデッドロックを回避するための本発明に係る自動分散処理システムの実施の形態を示す構成図である。
【００５４】
このシステムでは、委託元マシン１の命令中継スレッド１３１は、命令Ａ（ダイアログ表示命令）が発生したとき（Ｓ３１）、ロックをかけるが、その命令Ａがダイアログ表示命令であれば（Ｓ３２）、ロックを解放し（Ｓ３３）、命令Ａを委託先マシン２の命令処理スレッド２１３に中継する（Ｓ３４）。ステップＳ３１〜Ｓ３３は命令解析ロック解除機能である。
【００５５】
委託先マシン２の命令処理スレッド２１３は、命令Ａを受信するとその命令内容であるダイアログ表示に関し、ロックをかけて処理し(処理内ではロックを解放して待機し、再開依頼を待つ)、その処理終了後に返信する（Ｓ８１）。ここで、委託元マシン１の命令中継スレッド１３１は、委託先マシン２からの返信を受信し（Ｓ３５）、命令Ａを終了する（Ｓ３６）。
【００５６】
一方、委託先マシン２の命令中継スレッド２１１は、所定周期でダイアログ非表示イベント発生の有無を判断し（Ｓ８２）、ダイアログ非表示時にはイベント処理（ロック取得）を実行し命令Ｂが発生したとき（Ｓ８３）、委託元マシン１の命令処理スレッド１３３に送信し，命令処理後の返信を受けて命令Ｂを終了し（Ｓ８４）、ロックを解放する。
【００５７】
従って、以上のような実施の形態によれば、委託元マシン１の命令中継スレッド１３１は、命令Ａ発生時、ロックをかけるが、ダイアログ表示命令が発生したとき、つまり委託先の処理を待つ必要がある命令の場合には、ロックを解放し、委託先マシン２に中継するので、委託先マシン２のイベント処理スレッド２１１がイベント処理の過程で新たな命令Ｂが発生し委託元マシン２のロックが解除されているので゛、命令Ｂが発生しても委託元マシン１はデッドロックを容易に回避できる。
【００５８】
なお、本願発明は、上記実施の形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変形して実施できる。また、各実施の形態は可能な限り組み合わせて実施することが可能であり、その場合には組み合わせによる効果が得られる。さらに、上記各実施の形態には種々の上位，下位段階の発明が含まれており、開示された複数の構成要素の適宜な組み合わせにより種々の発明が抽出され得る。例えば実施の形態に示される全構成要件から幾つかの構成要件が省略されうることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【図面の簡単な説明】
【００５９】
【図１】本発明に係る自動分散処理システムの一実施の形態を示す構成図。
【図２】アプリケーションの通常実行時のモジュールの概略構成図。
【図３】デッドロック防止処理を説明するフローチャート。
【図４】デッドロックの発生する例を説明する図。
【図５】図４に示すデッドロックの回避例を説明する自動分散処理システムの構成図。
【図６】実行マシンの通常実行時の処理を説明するフローチャート。
【図７】デッドロックの発生する他の例を説明する図。
【図８】図７に示すデッドロックを回避するための本発明に係る自動分散処理システムの実施形態を説明する構成図。
【図９】従来の一般的なデッドロック発生の例を説明する図。
【符号の説明】
【００６０】
１…委託元マシン、２…委託先マシン、１１…アプリケーション、１２…上位ライブラリ、１３…命令中継ライブラリ、１４…記録媒体、２１…命令実行モジュール、２２…上位ライブラリ、２４…記録媒体、１３１…命令中継スレッド、１３２…命令振り分けスレッド、１３３…命令処理スレッド、１３４…スレッド管理テーブル、１３５…解放済スレッド蓄積部、２１１…命令中継スレッド、２１２…命令振り分けスレッド、２１３…命令処理スレッド、２１４…スレッド管理テーブル
２１５…解放済スレッド蓄積部。
【図１】
2008146674.tif 000003
【図２】
2008146674.tif 000004
【図３】
2008146674.tif 000005
【図４】
2008146674.tif 000006
【図５】
2008146674.tif 000007
【図６】
2008146674.tif 000008
【図７】
2008146674.tif 000009
【図８】
2008146674.tif 000010
【図９】
2008146674.tif 000011