mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-30 10:02:24 -05:00
[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:
parent
8de928b5e9
commit
b8879ac68a
13 changed files with 639 additions and 268 deletions
40
vendor/codeberg.org/gruf/go-mutexes/pool.go
generated
vendored
Normal file
40
vendor/codeberg.org/gruf/go-mutexes/pool.go
generated
vendored
Normal 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue