1 runner/runner.go
package runner
import ("errors"
"os"
"os/signal"
"time"
)
type Runner struct {
interrupt chan os.Signal //接收信号的通道
complete chan error //接收完成的通道
timeout <-chan time.Time //接收超时的通道
tasks []func(int) //任务数组,保存的是函数,函数作为一个元素使用。
}
//统一错误
var ErrTimeout = errors.New("received timeout")
var ErrInterrupt = errors.New("received interrupt")
//
func New(d time.Duration) *Runner {
return &Runner {
interrupt:make(chan os.Signal, 1), //创建信号通道
complete: make(chan error), //任务完成通道
timeout:time.After(d), //返回一个时间通道,该通道在无操作时,d时间后激发超时
}
}
func

本文探讨了Golang中的并发模式,通过分析runner/runner.go和main/main.go两个文件,展示了如何创建并使用Runner结构体来实现并发执行任务。通过对代码的解析,读者可以了解到如何在Golang中有效利用goroutines和channels进行并发控制。
最低0.47元/天 解锁文章
341

被折叠的 条评论
为什么被折叠?



