Dir-Flock
---------
Directory-based advisory locking to provide synchronized
access to some resource.
Example:
use Dir::Flock;
# Existing directory
my $dir = "/path/already/exists";
if (Dir::Flock::lock($dir)) {
# synchronized code
Dir::Flock::unlock($dir);
}
# Dedicated temp directory, flock semantics
use Fcntl ':flock';
my $dir = Dir::Flock::getDir( "/some/path" ); # $dir is subdir of /some/path
my $z = Dir::Flock::flock $dir, LOCK_EX | LOCK_NB;
while (!$z) {
print STDERR "Lock not available\n";
do_unsynchronized_things();
$z = Dir::Flock::flock $dir, LOCK_EX | LOCK_NB;
}
print STDERR "Acquired lock\n";
do_synchronized_things();
$z = Dir::Flock::flock $dir, LOCK_UN;
# scoping semantics
{
my $mutex = Dir::Flock::lockobj( $somedir );
do_synchronized_things();
} # unlocked as $mutex goes out of scope
# code block semantics
Dir::Flock::sync { do_synchronized_things() } "/some/directory";
INSTALLATION
To install this module, follow the usual recipe:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc Dir::Flock
You can also look for information at:
RT, CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Dir-Flock
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/Dir-Flock
CPAN Ratings
http://cpanratings.perl.org/d/Dir-Flock
LICENSE AND COPYRIGHT
Copyright (C) 2019 Marty O'Brien
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See
http://dev.perl.org/licenses/ for more information.