aboutsummaryrefslogtreecommitdiff
path: root/doc/go_mem.html
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2014-10-27 17:08:50 -0700
committerRob Pike <r@golang.org>2014-10-27 17:08:50 -0700
commit2eb1b658305bfd32774fd1e6a32cd6463564cf89 (patch)
treec90e6e1b4839247993b484600579fad1d683463d /doc/go_mem.html
parentccc713c7caa8900facc99bffaad4ee4a22013b01 (diff)
downloadgo-2eb1b658305bfd32774fd1e6a32cd6463564cf89.tar.gz
go-2eb1b658305bfd32774fd1e6a32cd6463564cf89.zip
doc/go_mem.html: don't be clever
Add a short introductory section saying what most Go programmers really need to know, which is that you shouldn't have to read this document to understand the behavior of your program. LGTM=bradfitz, adg, tracey.brendan, iant, rsc, dsymonds R=golang-codereviews, bradfitz, tracey.brendan, adg, iant, rsc, dsymonds CC=golang-codereviews https://golang.org/cl/158500043
Diffstat (limited to 'doc/go_mem.html')
-rw-r--r--doc/go_mem.html23
1 files changed, 23 insertions, 0 deletions
diff --git a/doc/go_mem.html b/doc/go_mem.html
index 2ea1ded7a3..5dd48ff7fb 100644
--- a/doc/go_mem.html
+++ b/doc/go_mem.html
@@ -21,6 +21,29 @@ reads of a variable in one goroutine can be guaranteed to
observe values produced by writes to the same variable in a different goroutine.
</p>
+
+<h2>Advice</h2>
+
+<p>
+Programs that modify data being simultaneously accessed by multiple goroutines
+must serialize such access.
+</p>
+
+<p>
+To serialize access, protect the data with channel operations or other synchronization primitives
+such as those in the <a href="/pkg/sync/"><code>sync</code></a>
+and <a href="/pkg/sync/atomic/"><code>sync/atomic</code></a> packages.
+</p>
+
+<p>
+If you must read the rest of this document to understand the behavior of your program,
+you are being too clever.
+</p>
+
+<p>
+Don't be clever.
+</p>
+
<h2>Happens Before</h2>
<p>