Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


2.9 スレッド制御

マルチスレッド構成のプロセスでUAPに異常が発生した場合,同期シグナルが発生して処理が中断されます。この場合,プロセス内の障害の発生したスレッドの処理だけを終了させて,ほかのスレッドの処理を続行させると,処理を続行させたスレッドがハングアップしたり異常終了したりするおそれがあります。そのため,通常は,UAPに異常が発生した場合は,プロセス内の全スレッドを終了させます。

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

UAPに異常が発生した場合に発生する同期シグナルを次の表に示します。

表2‒10 UAPの異常で発生する同期シグナル

同期シグナル名

同期シグナルの発生要因

SIGBUS

バスエラー(アドレス境界不正など)が発生しました。

SIGEMT

EMTシグナルです。

SIGFPE

算術演算の例外(0除算など)が発生しました。

SIGILL

不正な命令(0アドレスコールなど)を実行しています。

SIGSEGV

無効なメモリへアクセス(不正アドレスの書き込み,スタックオーバフローなど)しようとしています。

〈この節の構成〉