]> Cypherpunks repositories - gostls13.git/commit
cmd/go/internal/lockedfile: add package and support library
authorBryan C. Mills <bcmills@google.com>
Tue, 16 Oct 2018 14:42:58 +0000 (10:42 -0400)
committerBryan C. Mills <bcmills@google.com>
Thu, 29 Nov 2018 18:17:26 +0000 (18:17 +0000)
commit47dc92824613e8cb8435457c8b60ba6da671737d
tree92e46129232ea522fff0bc97bbbe7e3533afc8ba
parenta30f8d1e69238984fcb43fbd9d1c64d46602f6dd
cmd/go/internal/lockedfile: add package and support library

lockedfile.File passes through to os.File, with Open, Create, and OpenFile
functions that mimic the corresponding os functions but acquire locks
automatically, releasing them when the file is closed.

lockedfile.Sentinel is a simplified wrapper around lockedfile.OpenFile for the
common use-case of files that signal the status of idempotent tasks.

lockedfile.Mutex is a Mutex-like synchronization primitive implemented in terms
of file locks.

lockedfile.Read is like ioutil.Read, but obtains a read-lock.

lockedfile.Write is like ioutil.Write, but obtains a write-lock and can be used
for read-only files with idempotent contents.

Updates #26794

Change-Id: I50f7132c71d2727862eed54411f3f27e1af55cad
Reviewed-on: https://go-review.googlesource.com/c/145178
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
13 files changed:
src/cmd/go/internal/lockedfile/internal/filelock/filelock.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_other.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_plan9.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_solaris.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_test.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_unix.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/internal/filelock/filelock_windows.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/lockedfile.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/lockedfile_filelock.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/lockedfile_plan9.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/lockedfile_test.go [new file with mode: 0644]
src/cmd/go/internal/lockedfile/mutex.go [new file with mode: 0644]
src/cmd/go/testdata/script/mod_patterns.txt