aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorFerenc Szabo <frncmx@gmail.com>2020-06-25 11:12:50 +0200
committerRob Pike <r@golang.org>2020-06-30 13:02:41 +0000
commitc4fd3f6ff60189ba18446d538523b646f37f930b (patch)
treef791724eb24d264ed80c2cdb9e231dfc1acd841d /doc
parent8c521739f27bd745bde0dcb3d5c9a332b06a6a42 (diff)
downloadgo-c4fd3f6ff60189ba18446d538523b646f37f930b.tar.gz
go-c4fd3f6ff60189ba18446d538523b646f37f930b.zip
doc: add note about missing lock in sample code
The sample code in 'Interfaces and methods' section contains a data race. Handlers are served concurrently. The handler does write and read operations; `go test -race` would fail (with concurrent requests). Since the doc is frozen and the code remains less cluttered without locks/atomic, don't change the sample code. Change-Id: I654b324d2f0b7f48497822751907c7d39e2f0e3d Reviewed-on: https://go-review.googlesource.com/c/go/+/239877 Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'doc')
-rw-r--r--doc/effective_go.html12
1 files changed, 8 insertions, 4 deletions
diff --git a/doc/effective_go.html b/doc/effective_go.html
index 9be6bc7cb06..76204029841 100644
--- a/doc/effective_go.html
+++ b/doc/effective_go.html
@@ -2336,10 +2336,9 @@ of the request from the client.
</p>
<p>
For brevity, let's ignore POSTs and assume HTTP requests are always
-GETs; that simplification does not affect the way the handlers are
-set up. Here's a trivial but complete implementation of a handler to
-count the number of times the
-page is visited.
+GETs; that simplification does not affect the way the handlers are set up.
+Here's a trivial implementation of a handler to count the number of times
+the page is visited.
</p>
<pre>
// Simple counter server.
@@ -2355,6 +2354,11 @@ func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
<p>
(Keeping with our theme, note how <code>Fprintf</code> can print to an
<code>http.ResponseWriter</code>.)
+In a real server, access to <code>ctr.n</code> would need protection from
+concurrent access.
+See the <code>sync</code> and <code>atomic</code> packages for suggestions.
+</p>
+<p>
For reference, here's how to attach such a server to a node on the URL tree.
</p>
<pre>