Best way to control multiple threads writing & reading from the same file (Perl)

Expertos,

What's the best way to control multiple threads writing & reading from the same file in Perl?

I'm working with the threads::simple module.

Thanks!

php-newbieAsked:
Who is Participating?
 
Justin MathewsConnect With a Mentor Commented:
You can use flock() to lock a file handle in exclusive or shared mode. So each thread can call flock() to acquire an exclusive lock before writing to the file and immediately release the lock so that other threads also can obtain a lock and write to the file. Here is the sample from the documentation (http://perldoc.perl.org/functions/flock.html):



use Fcntl ':flock'; # import LOCK_* constants

sub lock {
    flock(MBOX,LOCK_EX);
    # and, in case someone appended
    # while we were waiting...
    seek(MBOX, 0, 2);
}

sub unlock {
    flock(MBOX,LOCK_UN);
}

open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
        or die "Can't open mailbox: $!";

lock();
print MBOX $msg,"\n\n";
unlock();

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.