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
排他制御モードを設定します。排他制御モードは次のどちらか一方を設定します。重複して設定できません。
●ownerflag
DCLCK_OWNER_MIGRATEを設定します。
●flags
資源の排他に関するフラグを設定します。設定できる値を次に示します。
リターン値
リターン値 | リターン値(数値) | 意味 |
---|---|---|
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のライブラリとロックサービスのバージョンが一致していません。 |