parallel

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: MPL-2.0 Imports: 4 Imported by: 1

Documentation

Overview

Package parallel 实现了可优雅关闭退出所有的actors Group

| ---> 执行actor
| ---> 退出处理

其类似errgroup, 但其不要求actor goroutines去理解上下文的意思,这样它可以在更多的场景下使用. 例如, 处理net.Listeners的connections, 或者从关闭的io.Reader中读取输入

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SignalActor

func SignalActor(ctx context.Context, signals ...os.Signal) (execute func() error, interrupt func(error))

SignalActor actor监听signal信息, 当进程收到其中一个信号或者parent context被canceled

Types

type Group

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

Group 收集一系列actor并且同时运行它们 当其中某一个actor执行完,其他actors都会被中断执行

func (*Group) Add

func (g *Group) Add(execute func() error, interrupt func(error))

Add 添加actor到group中。 每个actor都必须被中断函数是抢占控制,换句话说,当中断函数执行,actor执行函数必须退出 同时,必须保证执行函数退出后再调用中断函数也是安全的

首个执行完成的actor会中断所有正在运行的actor, 通过将error传给中断函数,最后被Run返回

func (*Group) Run

func (g *Group) Run() error

Run 并行运行所有actors 当首个actor执行完成,其他的actor都会被中断 只有所有actors退出后Run才返回,否则会一直会阻塞 Run最后返回时会返回首个退出的actor返回的error

type SignalError

type SignalError struct {
	Signal os.Signal
}

SignalError 当signalActor的execute函数收到信号退出是返回该错误

func (SignalError) Error

func (e SignalError) Error() string

Error 实现Error接口

Jump to

Keyboard shortcuts

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