routine

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 26, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package routine 协程池库,如果你有一个任务需要另起协程执行,请调用这个库

Example Usage

routine.Run(true, func() {
  // 书写协程逻辑 ...
})

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidManager 不支持的协程控制器类型
	ErrInvalidManager = errors.New("unsupported routine manager type")
	// ErrInvalidPanicError 不支持的崩溃错误类型
	ErrInvalidPanicError = errors.New("unsupported panic error interface")
	// ErrManagerClosed 控制器关闭时,无法正常执行任务,请先调用 routine.Open()
	ErrManagerClosed = errors.New("cannot exec task when manager closed")
)
View Source
var (

	// DefaultManagerOptions 默认 Manager 选项
	DefaultManagerOptions = Options{
		PoolSize: -1,
	}
)

Functions

func Catch

func Catch()

Catch 协程恢复处理

func Close

func Close() error

Close 关闭控制器

func GetRoutineNumber

func GetRoutineNumber() int

GetRoutineNumber 获取当前正在运行的协程数量

func Handle

func Handle(r interface{})

Handle 恢复执行函数

func Open

func Open() error

Open 开启控制器

func RegisterManagerType

func RegisterManagerType(name string, f NewManagerFunc)

RegisterManagerType 注册一个新的协程控制器类型

通过这个函数,可以轻松扩展这个库

func Run

func Run(needRecover bool, task Task) error

Run 把任务交给协程处理

func SetManager

func SetManager(typ string, opts ...Option) error

func Trace

func Trace(skip int) []byte

Trace 获取堆栈信息 详见 runtime/debug.Stack()

Types

type Ants

type Ants struct {
	// contains filtered or unexported fields
}

Ants 由 panjf2000/ants 实现的线程池

func (*Ants) Close

func (a *Ants) Close() error

func (*Ants) GetRoutineNumber

func (a *Ants) GetRoutineNumber() int

func (*Ants) Open

func (a *Ants) Open() error

func (*Ants) Run

func (a *Ants) Run(needRecover bool, task Task) error

type Logger

type Logger struct {
}

Logger 日志处理,将 ants 自带的日志库覆盖为项目内的日志库

func (*Logger) Printf

func (l *Logger) Printf(format string, args ...interface{})

Printf 日志打印

type Manager

type Manager interface {
	// Open 开启控制器
	Open() error
	// Close 关闭控制器
	Close() error
	// GetRoutineNumber 获取当前正在运行的协程数量
	GetRoutineNumber() int
	// Run 把任务交给协程处理
	Run(needRecover bool, task Task) error
}

Manager 协程控制器

type NewManagerFunc

type NewManagerFunc func(opts ...Option) Manager

NewManagerFunc 创建协程控制器实例的函数

type Option

type Option func(*Options)

Option 选项闭包

func WithPoolSize

func WithPoolSize(size int32) Option

WithPoolSize 设置协程池大小,负数代表无上限限制

type Options

type Options struct {
	// PoolSize 协程池大小,负数代表无上限限制
	PoolSize int32
}

Options 选项

type Task

type Task func()

Task Goroutine 需要执行的任务

Jump to

Keyboard shortcuts

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