flock
implements a thread-safe sync.Locker interface for file locking. It also
includes a non-blocking TryLock() function to allow locking without blocking execution.
flock
is released under the BSD 3-Clause License. See the LICENSE
file for more details.
go get -u github.com/theckman/go-flock
import "github.com/theckman/go-flock"
fileLock := flock.NewFlock("/var/lock/go-lock.lock")
locked, err := fileLock.TryLock()
if err != nil {
// handle locking error
}
if locked {
// do work
fileLock.Unlock()
}
For more detailed usage information take a look at the package API docs on GoDoc.