# flock [](https://travis-ci.org/gofrs/flock) [](https://godoc.org/github.com/gofrs/flock) [](https://github.com/gofrs/flock/blob/master/LICENSE) [](https://goreportcard.com/report/github.com/gofrs/flock) `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. ## License `flock` is released under the BSD 3-Clause License. See the `LICENSE` file for more details. ## Go Compatibility This package makes use of the `context` package that was introduced in Go 1.7. As such, this package has an implicit dependency on Go 1.7+. ## Installation ``` go get -u github.com/gofrs/flock ``` ## Usage ```Go import "github.com/gofrs/flock" fileLock := flock.New("/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](https://godoc.org/github.com/gofrs/flock).