diff options
Diffstat (limited to 'src/sync/map_reference_test.go')
| -rw-r--r-- | src/sync/map_reference_test.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/sync/map_reference_test.go b/src/sync/map_reference_test.go index aa5ebf352f..283da0f3a9 100644 --- a/src/sync/map_reference_test.go +++ b/src/sync/map_reference_test.go @@ -13,7 +13,7 @@ import ( // mapInterface is the interface Map implements. type mapInterface interface { - Load(any) (any, bool) + Load(key any) (value any, ok bool) Store(key, value any) LoadOrStore(key, value any) (actual any, loaded bool) LoadAndDelete(key any) (value any, loaded bool) @@ -22,6 +22,7 @@ type mapInterface interface { CompareAndSwap(key, old, new any) (swapped bool) CompareAndDelete(key, old any) (deleted bool) Range(func(key, value any) (shouldContinue bool)) + Clear() } var ( @@ -144,6 +145,13 @@ func (m *RWMutexMap) Range(f func(key, value any) (shouldContinue bool)) { } } +func (m *RWMutexMap) Clear() { + m.mu.Lock() + defer m.mu.Unlock() + + clear(m.dirty) +} + // DeepCopyMap is an implementation of mapInterface using a Mutex and // atomic.Value. It makes deep copies of the map on every write to avoid // acquiring the Mutex in Load. @@ -269,3 +277,10 @@ func (m *DeepCopyMap) dirty() map[any]any { } return dirty } + +func (m *DeepCopyMap) Clear() { + m.mu.Lock() + defer m.mu.Unlock() + + m.clean.Store((map[any]any)(nil)) +} |
