On May 24, 2014, at 9:40 AM, siegfr...@heintze.com wrote: > > I have multiple processes running cygwin/bash that are accessing the same > files in a certain directory. > I want to create a lock or semaphore or gate to serialize access to this > directory so that no two (or more processes) can access the directory at any > one time. As soon as the first process running bash grabs the lock using > perl, the perl program exits, bash creates a file, and bash then needs to > call a second perl program to release the lock or event so that only one of > the other blocking processes can now grab the lock. > > Can someone recommend a way to do this in perl or python? How would I do > this? I can think of several ways and they all sound difficult > (1) Create a memory resident Win32 Event. This is tedious because the lock > will be released when the perl program exists. I need to keep the lock until > bash executes a second perl program. I suppose bash could call perl as a > child process which would then grab the Win32 event and wait on a socket or a > second win32 event until the parent bash program is ready to release the > first win32 Event. This sounds much to complicated (and OS specific). Please > tell me there is an easier way! > > (2) I could use the resource manager built into SQL Server. I don't know how > to do this from perl. Is it possible? I don't like this option because it not > only requires SQL Server be installed and running but only works on windows. > > (3) Is there a way to do it with the Microsoft Access database? While this > has the advantage of not requiring a server be running (like SQL Server), it > is not OS neutral (and I don't know how to do it). > > (4) Perhaps there is cygwin implementation of Unix style semaphore that I can > call from perl? Are there any packages for this? This still has the problems > of option #1. > > (5) Gollly! I don't like any of the above options! They are all so > complicated. Is there something simpler?
I would try creating a “lock” file in the directory. File creation is pretty fast. You can use the file creation or modification time to recover from a stuck lock if you know about how long a lock should be held. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/