File locking


#1

I’m trying to understand usage of file.flock(File::LOCK_SH) which
obtains a shared lock. The documentation says it allows other
processes to also obtain a shared lock. What’s the point of a lock if
it isn’t locking anybody else out? There must be a use case for this
that I’m not seeing.

Also, the documentation for File.flock says that it isn’t supported on
all platforms. If you know of platforms that definitely do or do not
support this, I’d like to hear about them. I’m particularly interested
in XP and Fedora Core Linux.


#2

Mark V. wrote:

I’m trying to understand usage of file.flock(File::LOCK_SH) which
obtains a shared lock. The documentation says it allows other
processes to also obtain a shared lock. What’s the point of a lock if
it isn’t locking anybody else out? There must be a use case for this
that I’m not seeing.

A shared lock is usually implemented as a read-lock; in
other words, multiple processes can read from the file
at the same time but none may modify it.

Also, the documentation for File.flock says that it isn’t supported on
all platforms. If you know of platforms that definitely do or do not
support this, I’d like to hear about them. I’m particularly interested
in XP and Fedora Core Linux.

This I do not know.

E


#3

On 2006-01-22, Mark V. removed_email_address@domain.invalid wrote:

I’m trying to understand usage of file.flock(File::LOCK_SH)
… What’s the point of a lock if it isn’t locking anybody else out?

A shared lock locks out anyone who wants an exclusive lock. Typically
you want an exclusive lock for writing to a file and a shared lock for
reading it. That’s because it’s OK for several people to read a file
simultaneously, but if someone wants to write to it then no-one else
should be allowed to read or write, otherwise hilarity may ensue.

Cheers,

Jeremy H.