dc_lck_get
- 〈このページの構成〉
形式
ANSI C ,C++の形式
#include <dclck.h> int dc_lck_get(char *name,DCLONG lockmode,DCLONG ownerflag, DCLONG flags)
K&R版 C の形式
#include <dclck.h> int dc_lck_get(name,lockmode,ownerflag,flags) char *name; DCLONG lockmode; DCLONG ownerflag; DCLONG flags;
機能
UAPで使う資源の排他を指定します。排他の管理は,OpenTP1のトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。
ここで指定した排他は,排他を解除する関数(dc_lck_release_all関数,dc_lck_release_byname関数)を呼び出すか,dc_lck_get関数を呼び出したグローバルトランザクションの同期点取得後に解除されます。
UAPで値を設定する引数
●name
排他する資源の名称を,16バイトの英数字文字列で設定します。ここで設定した資源名称を基に,ロックサービスで排他を管理します。16バイト未満で,ヌル文字が出た場合は,そこまでの値を資源名称と見なします。16バイトを超えた値が設定された場合は,16バイト目までを資源名称と見なして,超えた部分を切り捨てます。
ロックサービスでは,文字列の内容についてはチェックしません。論理的に正しい名称を設定してください。資源名称に英数字以外の値を使った場合は,デッドロック情報,タイムアウト情報,およびlcklsコマンドの表示が乱れることがあります。
●lockmode
排他制御モードを設定します。排他制御モードは次のどちらか一方を設定します。重複して設定できません。
- DCLCK_PR
-
資源を参照します。ほかのUAPには参照だけを許可し,更新は禁止します。
- DCLCK_EX
-
資源を更新します。ほかのUAPには参照も更新も禁止します。
●ownerflag
DCLCK_OWNER_MIGRATEを設定します。
●flags
資源の排他に関するフラグを設定します。設定できる値を次に示します。
- DCLCK_WAIT
-
ほかのUAPとの資源を競合した場合に,資源の解放待ちにします。競合した場合にこのフラグが設定されてないときは,エラーリターンします。
- DCLCK_TEST
-
資源が使えるかどうかをテストするときに設定します。このフラグを設定したときは,dc_lck_get関数が正常終了しても,nameに設定した資源は確保されていないので注意してください。
- DCNOFLAGS
-
フラグを設定しません。
リターン値
リターン値 |
リターン値(数値) |
意味 |
---|---|---|
DC_OK |
0 |
正常に終了しました。 |
DCLCKER_PARAM |
-401 |
引数に設定した値が間違っています。 |
DCLCKER_WAIT |
-450 |
ほかのUAPが,nameに名称を設定した資源を使っています。 |
DCLCKER_DLOCK |
-452 |
デッドロックが起こりました。 |
DCLCKER_TIMOUT |
-453 |
OpenTP1のロックサービス定義で指定した待ち時間のタイムアウトで,資源を確保できませんでした。 |
DCLCKER_MEMORY |
-454 |
排他制御用のテーブルが不足しています。 |
DCLCKER_OUTOFTRN |
-455 |
トランザクション処理でないUAPから指定しています。 |
DCLCKER_VERSION |
-457 |
OpenTP1のライブラリとロックサービスのバージョンが一致していません。 |