[dependencies] update go-store, go-mutexes (#422)

* update go-store, go-mutexes

Signed-off-by: kim <grufwub@gmail.com>

* update vendored code

Signed-off-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2022-03-08 11:56:53 +00:00 committed by GitHub
commit b8879ac68a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 639 additions and 268 deletions

40
vendor/codeberg.org/gruf/go-mutexes/pool.go generated vendored Normal file
View file

@ -0,0 +1,40 @@
package mutexes
// pool is a very simply memory pool.
type pool struct {
current []interface{}
victim []interface{}
alloc func() interface{}
}
// Acquire will returns a sync.RWMutex from pool (or alloc new).
func (p *pool) Acquire() interface{} {
// First try the current queue
if l := len(p.current) - 1; l >= 0 {
v := p.current[l]
p.current = p.current[:l]
return v
}
// Next try the victim queue.
if l := len(p.victim) - 1; l >= 0 {
v := p.victim[l]
p.victim = p.victim[:l]
return v
}
// Lastly, alloc new.
return p.alloc()
}
// Release places a sync.RWMutex back in the pool.
func (p *pool) Release(v interface{}) {
p.current = append(p.current, v)
}
// GC will clear out unused entries from the pool.
func (p *pool) GC() {
current := p.current
p.current = nil
p.victim = current
}