From 711135002217c9ccb16f944dfbf26a9b5f934c0d Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 23 Dec 2023 18:08:53 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=8E=BB=E9=99=A4=20buffer.Unbounded?= =?UTF-8?q?=20=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=92=8C=20nil=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/buffer/unbounded.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/utils/buffer/unbounded.go b/utils/buffer/unbounded.go index 68b4bc8..dafe943 100644 --- a/utils/buffer/unbounded.go +++ b/utils/buffer/unbounded.go @@ -9,15 +9,8 @@ import ( // // 该缓冲区来源于 gRPC 的实现,用于在不使用额外 goroutine 的情况下实现无界缓冲区 // - 该缓冲区的所有方法都是线程安全的,除了用于同步的互斥锁外,不会阻塞任何东西 -func NewUnbounded[V any](generateNil func() V) *Unbounded[V] { - return &Unbounded[V]{c: make(chan V, 1), nil: generateNil()} -} - -// NewUnboundedN 与 NewUnbounded 相同,只是省略了 generateNil 参数 -func NewUnboundedN[V any]() *Unbounded[V] { - return NewUnbounded[V](func() (v V) { - return v - }) +func NewUnbounded[V any]() *Unbounded[V] { + return &Unbounded[V]{c: make(chan V, 1)} } // Unbounded 是无界缓冲区的实现 @@ -26,7 +19,6 @@ type Unbounded[V any] struct { closed bool mu sync.Mutex backlog []V - nil V } // Put 将数据放入缓冲区 @@ -57,7 +49,6 @@ func (slf *Unbounded[V]) Load() { if len(slf.backlog) > 0 { select { case slf.c <- slf.backlog[0]: - slf.backlog[0] = slf.nil slf.backlog = slf.backlog[1:] default: }