Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


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のライブラリとロックサービスのバージョンが一致していません。