pool

package
v0.0.0-...-b93445a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Buffer = NewPool(
	func() *bytes.Buffer {
		return &bytes.Buffer{}
	},
	func(buf *bytes.Buffer) {
		buf.Reset()
	},
)
View Source
var Builder = NewPool(
	func() *strings.Builder {
		return &strings.Builder{}
	},
	func(buf *strings.Builder) {
		buf.Reset()
	},
)
View Source
var Timer = NewPool(
	func() *time.Timer {
		t := time.NewTimer(0)
		t.Stop()
		return t
	},
	func(t *time.Timer) {
		if !t.Stop() {
			select {
			case <-t.C:
			default:
			}
		}
	},
)

Functions

func GetBytes

func GetBytes(size uint32) []byte

GetBytes 获取指定大小的字节切片

[⚠️] 返回的数据,不可以append.否则会丢失原指针,导致无法正确回收

func GetProperBuffer

func GetProperBuffer(size int) *bytes.Buffer

GetProperBuffer 根据所需大小返回合适的buffer

[⚠️] 使用限制:
	1. 写入数据总量不得超过请求的 size 大小, 否则 buffer 内部扩容会导致 PutBuffer 时分类错误
	2. 不可对返回的 buffer 进行动态追加写入(超出 size 的部分)
	3. 适用于已知数据大小的固定写入场景

func PutBuffer

func PutBuffer(buf *bytes.Buffer)

PutBuffer 将buffer放回适当的池中

[⚠️] 归还前确保 buffer 未因写入超量而扩容, 否则会被放入错误的池中

func PutBytes

func PutBytes(buf []byte)

PutBytes 归还字节切片到池中

Types

type Pool

type Pool[T any] struct {
	// contains filtered or unexported fields
}

Pool 通用对象池模版

func NewPool

func NewPool[T any](creator func() T, reset func(T)) *Pool[T]

NewPool 创建一个新的对象池

creator: 对象创建函数
reset: 对象重置函数 nil:不执行

func (*Pool[T]) Get

func (p *Pool[T]) Get() T

Get 从池中获取一个对象

func (*Pool[T]) Put

func (p *Pool[T]) Put(x T)

Put 将对象放回池中

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL