aboutsummaryrefslogtreecommitdiff
path: root/src/sync/atomic
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2022-01-26 16:53:50 -0500
committerGopher Robot <gobot@golang.org>2022-06-06 20:48:03 +0000
commita71ca3dfbd32faf351ff68bcc26a4d5abd9b06d7 (patch)
tree0523f7aeacea7089b127ea3a8e5e58dded85fa0e /src/sync/atomic
parent3651a6117e9a88576615c29c4faf7eeec55d7691 (diff)
downloadgo-a71ca3dfbd32faf351ff68bcc26a4d5abd9b06d7.tar.xz
runtime, sync, sync/atomic: document happens-before guarantees
A few of these are copied from the memory model doc. Many are entirely new, following discussion on #47141. See https://research.swtch.com/gomm for background. The rule we are establishing is that each type that is meant to help synchronize a Go program should document its happens-before guarantees. For #50859. Change-Id: I947c40639b263abe67499fa74f68711a97873a39 Reviewed-on: https://go-review.googlesource.com/c/go/+/381316 Auto-Submit: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Roland Shoemaker <roland@golang.org>
Diffstat (limited to 'src/sync/atomic')
-rw-r--r--src/sync/atomic/doc.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sync/atomic/doc.go b/src/sync/atomic/doc.go
index bb3b8f673e..4d426826da 100644
--- a/src/sync/atomic/doc.go
+++ b/src/sync/atomic/doc.go
@@ -36,6 +36,14 @@
// The load and store operations, implemented by the LoadT and StoreT
// functions, are the atomic equivalents of "return *addr" and
// "*addr = val".
+//
+// In the terminology of the Go memory model, if the effect of
+// an atomic operation A is observed by atomic operation B,
+// then A “synchronizes before” B.
+// Additionally, all the atomic operations executed in a program
+// behave as though executed in some sequentially consistent order.
+// This definition provides the same semantics as
+// C++'s sequentially consistent atomics and Java's volatile variables.
package atomic
import (