Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.6.1 マルチスレッド制御

TP1/EEは,マルチスレッドに対応しているため,TP1/EEプロセス内で複数のサービスを同時に実行できます。処理スレッドを利用して,各サービスを同一プロセスで実行できるため,サービスごとにプロセスを分ける方法よりも速く処理できます。同じサービスはシリアルに実行します。ただし,サービス引き出しの多重度を2以上に指定している場合は,パラレルに実行します。TP1/EEプロセス内で実行するスレッドの最大数は,プロセス関連定義のthread_noオペランドで指定できます。

TP1/EEは,マルチスレッドに対応するため,次の制御をします。

〈この項の構成〉

(1) 保護区/非保護区の制御

TP1/EEでは,UAPを処理内容に応じて保護区(プロセスダウン域)と非保護区(スレッドダウン域)に分けてプロセスの終了を制御します。保護区を実行中に異常が発生した場合は,プロセス内の全スレッドを終了させます。非保護区を実行中に異常が発生した場合は,異常が発生したスレッドだけを終了させます。異常が発生したスレッドだけを終了させることで,プロセスの終了を局所化できます。

UAPの保護区/非保護区は,ee_thd_protstart関数およびee_thd_protend関数で切り替えます。UAPの保護区/非保護区の詳細,およびee_thd_protstart関数,ee_thd_protend関数の詳細については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

(2) TP1/EEプロセスのハングアップ監視

TP1/EEプロセスのハングアップ監視は,TP1/EEが実行します。TP1/EEは,TP1/EEのモニタスレッドがプロセス関連定義のproc_hungup_timeオペランドで指定した時間以上停止すると,TP1/EEプロセスを強制停止します。TP1/EEのハングアップ監視の範囲を次の図に示します。

図3‒48 TP1/EEのハングアップ監視範囲

[図データ]

(3) スレッド生成失敗時の処理

TP1/EE起動時のスレッド生成の場合は,プロセス関連定義のthread_noオペランドに指定したスレッド数と同じ数のスレッドが生成される必要があります。一つでもスレッド生成に失敗すると,プロセスダウンしてTP1/EEを起動できません。

TP1/EE起動時以外のスレッド生成の場合は,処理スレッドが異常終了すると,TP1/EEは処理スレッドを再生成しようとします。処理スレッドの再生成に失敗した場合,プロセスダウンします。