The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

KinoSearch::Store::SharedLock - Shared (read) lock.

SYNOPSIS

    my $lock_factory = KinoSearch::Store::LockFactory->new(
        folder    => $folder,
        agent_id  => $hostname,
    );
    my $lock = $lock_factory->make_shared_lock(
        lock_name => 'segments_6r',
        timeout   => 5000,
    );

DESCRIPTION

SharedLock's interface is nearly identical to that of its parent class KinoSearch::Store::Lock, taking the same constructor arguments and implementing the same list of methods. It differs from Lock only in the semantics of two methods:

  • obtain() will not fail if another lock is held against lock_name (though it might fail for other reasons).

  • is_locked() returns true so long as some lock, somewhere is holding a lock on the resource identified by lock_name. That lock could be this instance, or it could be another. So this sequence is entirely possible:

        $lock->release; # works this time
        $lock->release; # doesn't do anything
        print "Still locked!" if $lock->is_locked; # prints "Still locked!"

COPYRIGHT

Copyright 2007 Marvin Humphrey

LICENSE, DISCLAIMER, BUGS, etc.

See KinoSearch version 0.20.