From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Sat, 4 Mar 2023 15:41:45 +0000 (+0800) Subject: Add X-Git-Tag: v0.23.11 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=c2b3e4b721bce3b9b39e80c4ab2ad46dabb934ef;p=part%2F.git Add --- diff --git a/pool/Pool.go b/pool/Pool.go index c131c0e..25e3c9d 100644 --- a/pool/Pool.go +++ b/pool/Pool.go @@ -11,7 +11,7 @@ type Buf[T any] struct { reuseF func(*T) *T poolF func(*T) *T buf []*T - sync.RWMutex + l sync.RWMutex } // 创建池 @@ -35,9 +35,29 @@ func New[T any](NewF func() *T, InUse func(*T) bool, ReuseF func(*T) *T, PoolF f return t } +func (t *Buf[T]) PoolInUse() (inUse int) { + t.l.RLock() + defer t.l.RUnlock() + + for i := 0; i < len(t.buf); i++ { + if t.inUse(t.buf[i]) { + inUse++ + } + } + + return +} + +func (t *Buf[T]) PoolSum() int { + t.l.RLock() + defer t.l.RUnlock() + + return len(t.buf) +} + func (t *Buf[T]) Trim() { - t.Lock() - defer t.Unlock() + t.l.Lock() + defer t.l.Unlock() for i := 0; i < len(t.buf); i++ { if !t.inUse(t.buf[i]) { @@ -49,8 +69,8 @@ func (t *Buf[T]) Trim() { } func (t *Buf[T]) Get() *T { - t.Lock() - defer t.Unlock() + t.l.Lock() + defer t.l.Unlock() for i := 0; i < len(t.buf); i++ { if !t.inUse(t.buf[i]) { @@ -66,8 +86,8 @@ func (t *Buf[T]) Put(item ...*T) { return } - t.Lock() - defer t.Unlock() + t.l.Lock() + defer t.l.Unlock() var cu = 0 for i := 0; i < len(t.buf); i++ { diff --git a/pool/Pool_test.go b/pool/Pool_test.go index da6965a..55cbb00 100644 --- a/pool/Pool_test.go +++ b/pool/Pool_test.go @@ -52,5 +52,4 @@ func TestXxx(t *testing.T) { var c3 = b.Get() t.Log(unsafe.Pointer(c3), c3) - }