CTK::Lock - a simple locking using symlink
use CTK::Lock;
my $locker = CTK::Lock->new(
file => '/path/to/file.lock',
expires => 600,
retry => 1200,
wait => 0.1,
);
if ($locker->lock) {
# do work requiring lock
# ...
$locker->unlock || warn $locker->errstr;
}
else {
warn $locker->errstr;
}
my $locker = CTK::Lock->new;
-or-
my $locker = CTK::Lock->new(
file => '/path/to/file.lock',
expires => 600,
retry => 1200,
wait => 0.1,
);
-or-
my $locker = CTK::Lock->new({
expires => 600,
retry => 1200,
wait => 0.1,
});
新しいロックオブジェクトを作成します。 次のようにして、オプションのパラメータを指定することもできます。
my $locker = CTK::Lock->new(file => '/path/to/file.lock',
expires => 600,
retry => 1200,
wait => 0.1,
);
file: ロックファイルのパス
expires: ロックの有効期限(デフォルト 600 秒)
有効期限を越えるロックは無効とみなして、新しくロックファイルを 作成しなおします。無期限にする場合は 0 を指定して下さい。
retry: ロックを獲得するたでの再トライ回数(デフォルト 1200 回)
wait: 再トライまでの待ち時間(デフォルト 0.1 秒)
$locker->lock;
-or-
$locker->lock('/path/to/file.lock');
ロックファイルの作成を試みます。 ロックに成功すると 1、失敗すると undef を返します。
失敗したときには、errstr でエラーの内容を確認して下さい。
パラメータとしてロックファイルを指定することもできます。
指定した場合は new の file オプションよりも優先的に使用されます。
$status = $locker->is_locked;
ロックの状態を返します。 ロック状態にある場合は 1、ロック状態にない場合は undef を返します。
$locker->unlock;
ロックファイルの削除(ロックの解放)を試みます。 解除に成功すると 1、失敗すると undef を返します。
$errstr = $locker->errstr; print $errstr, "\n";
発生したエラーを取り出します。 エラーが複数ある場合は、\n で区切って値を返します。 エラーがない場合は、空の文字列 '' を返します。
UNIX 上で動作します。NFS 環境では動作しません。
Yutaka Kojima <yutaka@asmate.net>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.