summaryrefslogtreecommitdiff
path: root/usagepool.go
diff options
context:
space:
mode:
Diffstat (limited to 'usagepool.go')
-rw-r--r--usagepool.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/usagepool.go b/usagepool.go
index 3b8e975..dd4f606 100644
--- a/usagepool.go
+++ b/usagepool.go
@@ -80,6 +80,14 @@ func (up *UsagePool) LoadOrStore(key, val interface{}) (actual interface{}, load
return
}
+// Range iterates the pool the same way sync.Map.Range does.
+// This does not affect usage counts.
+func (up *UsagePool) Range(f func(key, value interface{}) bool) {
+ up.pool.Range(func(key, value interface{}) bool {
+ return f(key, value.(*usagePoolVal).value)
+ })
+}
+
type usagePoolVal struct {
usage int32 // accessed atomically; must be 64-bit aligned for 32-bit systems
value interface{}