bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo C リファレンス > セクション 3c - C 関数 |
Tuxedo C リファレンス
|
名前
tpbegin()−トランザクションを開始するためのルーチン
形式
#include <atmi.h>
int tpbegin(unsigned long timeout, long flags)
機能説明
BEA Tuxedo ATMI システムにおけるトランザクションは、完全に成功するか、あるいは何も影響を残さない 1 つの論理的な作業単位を定義するときに使用します。トランザクションにより、多くのプロセスで (そして、多分様々なサイトで) 行われる作業を 1 つの分割できない単位として扱うことができます。トランザクションのイニシエータは tpbegin() とともに、tpcommit() または tpabort() を使用して、トランザクション内での処理を記述します。いったん tpbegin() が呼び出されると、他のプロセスとの通信は、後のプロセス (もちろん、サーバ) を「トランザクション・モード」にすることができます (つまり、サーバの作業はトランザクションの一部となります)。トランザクションに参加したプロセスをパーティシパントと呼びます。トランザクションには、必ず 1 つの実行元があり、いくつかのパーティシパントをもつことができます。tpcommit() または tpabort() を呼び出せるのは、トランザクションの実行元だけです。パーティシパントは、tpreturn() を呼び出したときに使用する戻り値 (rvals) によって、トランザクションの結果に影響を与えることができます。トランザクション・モードに入ると、サーバに出されたサービス要求はすべて、トランザクションの一部として処理されます (明示的にリクエスタからのそれ以外の指定がない場合)。
また、会話型サーバに対して確立されたオープン接続があるときにプログラムがトランザクションを起動しても、これらの接続はトランザクション・モードには変わりません。これは、tpconnect() の呼び出し時に TPNOTRAN フラグを指定したことと同じです。
tpbegin() の最初の引数 timeout は、トランザクションのタイムアウトまでの時間を最低 timeout 秒にすることを指定します。トランザクションはタイムアウト時間を経過した後は、「アボートのみ」としてマーク付けされます。timeout の値が 0 であると、トランザクションにはシステムが許すかぎりの最大時間 (秒単位) のタイムアウト値が与えられます (つまり、このときのタイムアウト値は、システムが定義している符号なし long 型の最大値になります)。
現時点では、tpbegin() の第 2 引数 flags は将来の用途のために予約されており、必ず 0 を指定してください。
マルチスレッドのアプリケーションの場合、TPINVALIDCONTEXT 状態 のスレッドは、tpbegin() の呼び出しを発行できません。
戻り値
異常終了すると、tpbegin() は -1 を返し、tperrno を設定してエラー条件を示します。
エラー
異常終了時には、tpbegin() は tperrno を次のいずれかの値に設定します。
注意事項
BEA Tuxedo ATMI システムのトランザクションを記述するために tpbegin()、tpcommit()、および tpabort() を使用する場合、XA インターフェイスに準拠した (呼び出し元に妥当にリンクされている) リソース・マネージャが行う作業のみがトランザクションの特性を備えていることを記憶しておくことが重要です。トランザクションにおいて実行される他のすべての操作は、tpcommit() あるいは tpabort() のいずれにも影響されません。リソース・マネージャによって実行される操作が、BEA Tuxedo ATMI システムのトランザクションの一部となるように、XA インターフェイスを満たすリソース・マネージャをサーバにリンクします。詳しくは、buildserver() を参照してください。
関連項目
tpabort(3c)、tpcommit(3c)、tpgetlev(3c)、tpscmt(3c)
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |