// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
// +build darwin dragonfly freebsd linux netbsd openbsd solaris

package unix_test

import (
	"log"
	"os"

	"golang.org/x/sys/unix"
)

func ExampleFlock() {
	f, _ := os.Create("example.lock")
	if err := unix.Flock(int(f.Fd()), unix.LOCK_EX); err != nil {
		log.Fatal(err)
	}
	// Do work here that requires the lock. When finished, release the lock:
	if err := unix.Flock(int(f.Fd()), unix.LOCK_UN); err != nil {
		log.Fatal(err)
	}
}
