summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChangkun Ou <hi@changkun.de>2022-12-28 15:04:58 +0100
committerGopher Robot <gobot@golang.org>2023-01-25 19:53:59 +0000
commitb68d699aa73291d3ab8c7547047308efcd582072 (patch)
treeba32cdd7f616ce9c319f58bedc05f8068a6333f9
parent10124c2631893fc944a98880796eadd7df048c37 (diff)
downloadgo-git-b68d699aa73291d3ab8c7547047308efcd582072.tar.gz
[release-branch.go1.20] sync: document memory model for Swap/CompareAnd{Swap,Delete} in Map
CL 381316 documented the memory model of Map's APIs. However, the newly introduced Swap, CompareAndSwap, and CompareAndDelete are missing from this documentation as CL 399094 did not add this info. This CL specifies the defined read/write operations of the new Map APIs. For #51972 Change-Id: I519a04040a0b429a3f978823a183cd62e42c90ae Reviewed-on: https://go-review.googlesource.com/c/go/+/459715 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Run-TryBot: Changkun Ou <mail@changkun.de> Auto-Submit: Bryan Mills <bcmills@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> (cherry picked from commit f07910bd577f73b81e4f7117c7cfdf9cf7579028) Reviewed-on: https://go-review.googlesource.com/c/go/+/463416 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Changkun Ou <mail@changkun.de>
-rw-r--r--src/sync/map.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/sync/map.go b/src/sync/map.go
index 658cef65cf..e8ccf58b56 100644
--- a/src/sync/map.go
+++ b/src/sync/map.go
@@ -27,9 +27,11 @@ import (
// In the terminology of the Go memory model, Map arranges that a write operation
// “synchronizes before” any read operation that observes the effect of the write, where
// read and write operations are defined as follows.
-// Load, LoadAndDelete, LoadOrStore are read operations;
-// Delete, LoadAndDelete, and Store are write operations;
-// and LoadOrStore is a write operation when it returns loaded set to false.
+// Load, LoadAndDelete, LoadOrStore, Swap, CompareAndSwap, and CompareAndDelete
+// are read operations; Delete, LoadAndDelete, Store, and Swap are write operations;
+// LoadOrStore is a write operation when it returns loaded set to false;
+// CompareAndSwap is a write operation when it returns swapped set to true;
+// and CompareAndDelete is a write operation when it returns deleted set to true.
type Map struct {
mu Mutex