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