diff --git a/core/collection/ring.go b/core/collection/ring.go index 90dae517..bdde1858 100644 --- a/core/collection/ring.go +++ b/core/collection/ring.go @@ -6,7 +6,7 @@ import "sync" type Ring struct { elements []interface{} index int - lock sync.Mutex + lock sync.RWMutex } // NewRing returns a Ring object with the given size n. @@ -31,8 +31,8 @@ func (r *Ring) Add(v interface{}) { // Take takes all items from r. func (r *Ring) Take() []interface{} { - r.lock.Lock() - defer r.lock.Unlock() + r.lock.RLock() + defer r.lock.RUnlock() var size int var start int