]> Cypherpunks repositories - gostls13.git/commitdiff
sync: update Map documentation with usage rule of thumb
authorMichael Stapelberg <stapelberg@google.com>
Thu, 20 Jul 2017 15:16:36 +0000 (08:16 -0700)
committerBryan Mills <bcmills@google.com>
Fri, 21 Jul 2017 16:02:43 +0000 (16:02 +0000)
As per bcmills’s lightning talk at GopherCon 2017:
https://github.com/gophercon/2017-talks/tree/master/lightningtalks/BryanCMills-AnOverviewOfSyncMap

Change-Id: I12dd0daa608af175d110298780f32c6dc5e1e0a0
Reviewed-on: https://go-review.googlesource.com/50310
Reviewed-by: Bryan Mills <bcmills@google.com>
src/sync/map.go

index 1238368d381d01f848b9f293000aa219ca63e4fa..c3c2d1cc8649d0aea08079d9d7910efd50ceac62 100644 (file)
@@ -12,6 +12,15 @@ import (
 // Map is a concurrent map with amortized-constant-time loads, stores, and deletes.
 // It is safe for multiple goroutines to call a Map's methods concurrently.
 //
+// Map is designed to reduce cache contention in the Go standard library.
+// It is optimized for use in concurrent loops with keys that are stable
+// over time, and either few steady-state stores, or stores localized to
+// one goroutine per key.
+//
+// For use cases that do not share these attributes, it will likely have
+// comparable or worse performance and worse type safety than an ordinary
+// map paired with a read-write mutex.
+//
 // The zero Map is valid and empty.
 //
 // A Map must not be copied after first use.