From 593f74bbab63d34c7060918088bcbad686c31c66 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 6 Mar 2012 17:57:23 +0000 Subject: libgo: Update to weekly.2012-03-04 release. From-SVN: r185010 --- libgo/go/io/io.go | 7 +++++++ libgo/go/io/pipe.go | 4 ++++ 2 files changed, 11 insertions(+) (limited to 'libgo/go/io') diff --git a/libgo/go/io/io.go b/libgo/go/io/io.go index bbfa6c2..7074834 100644 --- a/libgo/go/io/io.go +++ b/libgo/go/io/io.go @@ -6,6 +6,10 @@ // Its primary job is to wrap existing implementations of such primitives, // such as those in package os, into shared public interfaces that // abstract the functionality, plus some other related primitives. +// +// Because these interfaces and primitives wrap lower-level operations with +// various implementations, unless otherwise informed clients should not +// assume they are safe for parallel execution. package io import ( @@ -156,6 +160,9 @@ type WriterTo interface { // If ReadAt is reading from an input source with a seek offset, // ReadAt should not affect nor be affected by the underlying // seek offset. +// +// Clients of ReadAt can execute parallel ReadAt calls on the +// same input source. type ReaderAt interface { ReadAt(p []byte, off int64) (n int, err error) } diff --git a/libgo/go/io/pipe.go b/libgo/go/io/pipe.go index cf05e0c1..f3f0f17 100644 --- a/libgo/go/io/pipe.go +++ b/libgo/go/io/pipe.go @@ -175,6 +175,10 @@ func (w *PipeWriter) CloseWithError(err error) error { // with code expecting an io.Writer. // Reads on one end are matched with writes on the other, // copying data directly between the two; there is no internal buffering. +// It is safe to call Read and Write in parallel with each other or with +// Close. Close will complete once pending I/O is done. Parallel calls to +// Read, and parallel calls to Write, are also safe: +// the individual calls will be gated sequentially. func Pipe() (*PipeReader, *PipeWriter) { p := new(pipe) p.rwait.L = &p.l -- cgit v1.1