BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   C 言語を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


マルチスレッドおよびマルチコンテキスト・アプリケーションのテスト

ここでは、次の内容について説明します。

マルチスレッドおよびマルチコンテキスト・アプリケーションのテスト時の推奨事項

マルチスレッドやマルチコンテキストのコードをテストする場合、以下を行うことをお勧めします。

マルチスレッドおよびマルチコンテキスト・アプリケーションのトラブル・シューティング

エラーの原因を調べる場合、まず TPMULTICONTEXTS フラグが設定されているかどうか、またその設定内容を確認します。このフラグが設定されていないこと、または正しく設定されていないことが原因でよくエラーが起こります。

tpinit( ) の TPMULTICONTEXTS フラグの間違った使用

TPMULTICONTEXTS フラグを使用できない場合にこのフラグがプロセスに設定されているとき、または TPMULTICONTEXTS を設定する必要がある場合に設定されていないとき、tpinit()-1 を返し、tperrnoTPEPROTO を設定します。

TPMULTICONTEXTS が設定されていない場合の tpinit() の呼び出し

TPMULTICONTEXTS が設定されていない場合に tpinit() が呼び出されると、この関数はシングルコンテキスト・アプリケーションで呼び出されたときと同じように動作します。tpinit() が既に 1 回呼び出されている場合、それ以降の tpinit() 呼び出しで TPMULTICONTEXTS フラグが設定されていなくても、この関数は正常に終了します。これは、アプリケーション内の TUXCONFIG または WSNADDR 環境変数の値が変更されている場合にも当てはまります。TPMULTICONTEXTS フラグを設定せずに tpinit() を呼び出すことは、マルチコンテキスト・モードではできません。

クライアントがアプリケーションに参加していない場合に、tpinit() を呼び出す別の関数の呼び出しの結果として、暗黙的に tpinit() が呼び出されると、BEA Tuxedo システムでは TPMULTICONTEXTS フラグが設定されずに tpinit() が呼び出されたと解釈されます。これは、以降の tpinit() 呼び出しでどのフラグが使用されるかを判断するためです。

ほとんどの ATMI 関数は、既にマルチコンテキスト・モードで動作しているプロセスのコンテキストに対応付けされていないスレッドに呼び出された場合、tperrno(5)=TPEPROTO が設定されて失敗します。

スレッドのスタック・サイズの不足

一部のオペレーティング・システムでは、オペレーティング・システムのデフォルトのスレッド・スタック・サイズが BEA Tuxedo システムで使用するには十分ではありません。Compaq Tru64 UNIX と UnixWare の 2 つのオペレーティング・システムは、サイズが小さいことが認識されています。デフォルトのスレッド・スタック・サイズのパラメータが使用されている場合に、スタックを多用する関数がメイン・スレッド以外のスレッドで呼び出されると、これらのプラットフォーム上のアプリケーションはコア・ダンプします。通常、生成されるコア・ファイルから、スタック・サイズの不足が問題の原因であることはわかりません。

サーバ・ディスパッチ・スレッドやクライアントの任意通知型メッセージ・スレッドなど、BEA Tuxedo システムで独自のスレッドが生成される場合、これらのプラットフォームのデフォルトのスタック・サイズのパラメータを適切な値に調整できます。ただし、アプリケーションで独自のスレッドが生成される場合、アプリケーションで十分なスタック・サイズを指定する必要があります。BEA Tuxedo システムにアクセスするスレッドには、最低 128 K を指定してください。

Compaq Tru64 UNIX および Posix スレッドが使用されるそのほかのシステムでは、スレッドのスタック・サイズは、pthread_create() を呼び出す前に pthread_attr_setstacksize() を呼び出して指定します。UnixWare では、スレッドのスタック・サイズは thr_create() の引数として指定されます。この問題の詳細については、お使いのオペレーティング・システムのマニュアルを参照してください。

マルチスレッドおよびマルチコンテキスト・アプリケーションのエラー処理

エラーはユーザ・ログに記録されます。シングルコンテキスト・モードでもマルチコンテキスト・モードでも、各エラーに対して次の情報が記録されます。

process_ID.thread_ID.context_ID

関連項目

 

先頭へ戻る 前のトピックへ 次のトピックへ