buffer

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2023 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBufferIsEmpty = errors.New("buffer is empty")
)

Functions

This section is empty.

Types

type Ring

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

Ring 环形缓冲区

func NewRing

func NewRing[T any](initSize int) *Ring[T]

NewRing 创建一个环形缓冲区

func (*Ring[T]) Cap

func (slf *Ring[T]) Cap() int

Cap 返回缓冲区容量

func (*Ring[T]) IsEmpty

func (slf *Ring[T]) IsEmpty() bool

IsEmpty 是否为空

func (*Ring[T]) Len

func (slf *Ring[T]) Len() int

Len 返回缓冲区长度

func (*Ring[T]) Peek

func (slf *Ring[T]) Peek() (t T, err error)

Peek 查看数据

func (*Ring[T]) Read

func (slf *Ring[T]) Read() (T, error)

Read 读取数据

func (*Ring[T]) Reset

func (slf *Ring[T]) Reset()

Reset 重置缓冲区

func (*Ring[T]) Write

func (slf *Ring[T]) Write(v T)

Write 写入数据

type Unbounded

type Unbounded[V any] struct {
	// contains filtered or unexported fields
}

Unbounded 是无界缓冲区的实现

func NewUnbounded

func NewUnbounded[V any](generateNil func() V) *Unbounded[V]

NewUnbounded 创建一个无界缓冲区

  • generateNil: 生成空值的函数,该函数仅需始终返回 nil 即可

该缓冲区来源于 gRPC 的实现,用于在不使用额外 goroutine 的情况下实现无界缓冲区

  • 该缓冲区的所有方法都是线程安全的,除了用于同步的互斥锁外,不会阻塞任何东西

func NewUnboundedN added in v0.2.1

func NewUnboundedN[V any]() *Unbounded[V]

NewUnboundedN 与 NewUnbounded 相同,只是省略了 generateNil 参数

func (*Unbounded[V]) Close

func (slf *Unbounded[V]) Close()

Close 关闭

func (*Unbounded[V]) Get

func (slf *Unbounded[V]) Get() <-chan V

Get 获取读取通道

func (*Unbounded[V]) IsClosed added in v0.2.1

func (slf *Unbounded[V]) IsClosed() bool

IsClosed 是否已关闭

func (*Unbounded[V]) Load

func (slf *Unbounded[V]) Load()

Load 将缓冲区中的数据发送到读取通道中,如果缓冲区中没有数据,则不会发送

  • 在每次 Get 后都应该执行该函数

func (*Unbounded[V]) Put

func (slf *Unbounded[V]) Put(t V)

Put 将数据放入缓冲区

Jump to

Keyboard shortcuts

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