NAME

CTK::Lock - a simple locking using symlink


SYNOPSIS

  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;
  }


DESCRIPTION


METHODS

new
  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 秒)

lock
  $locker->lock;

  -or-

  $locker->lock('/path/to/file.lock');

ロックファイルの作成を試みます。 ロックに成功すると 1、失敗すると undef を返します。

失敗したときには、errstr でエラーの内容を確認して下さい。

パラメータとしてロックファイルを指定することもできます。 指定した場合は new の file オプションよりも優先的に使用されます。

new もしくは lock でファイルが指定されていないと ロックに失敗しますので、必ず設定して下さい。

is_locked
  $status = $locker->is_locked;

ロックの状態を返します。 ロック状態にある場合は 1、ロック状態にない場合は undef を返します。

unlock
  $locker->unlock;

ロックファイルの削除(ロックの解放)を試みます。 解除に成功すると 1、失敗すると undef を返します。

errstr
  $errstr = $locker->errstr;
  print $errstr, "\n";

発生したエラーを取り出します。 エラーが複数ある場合は、\n で区切って値を返します。 エラーがない場合は、空の文字列 '' を返します。


NOTICE

UNIX 上で動作します。NFS 環境では動作しません。


AUTHOR

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.


SEE ALSO

CTK