版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 前言 有些朋友可能看我的这篇文章 简单的GOLANG 协程池 这是我做的简单协程池,功能还算完备,但是有些任务执行的时间很长,如果想在协程池运行起来以后就退出,就只能死等。这是非常不友好的,因此我又写了一个新的协程池GContextPool,利用context支持在任务运行过程中,结束任务。原来的GPool仍然可以继续使用。 下面我们来看看用法。 1. 安装 go get github.com/vearne/golib/utils 2. 使用 2.1 创建协程池 // 设定协程池的中协程的数量是30个 cxt, cancel := context.WithTimeout(context.Background(), 1 * time.Second) defer cancel() var p *utils.GContextPool = utils.NewGContextPool(ctx, 30) 2.2 定义任务处理函数 任务处理函数形如 type JobContextFunc func(ctx context.Context, key interface{})… 继续阅读 简单的GOLANG 协程池2 (带Cancel功能)

版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 引言 很多时候,还是需要用到协程池的,简单撸了一个,方便工作中的需要,有bug请反馈 1. 安装 go get github.com/vearne/golib/utils 2. 使用 2.1 创建协程池 // 协程池的大小是30 var p *utils.GPool = utils.NewGPool(30) 2.2 定义任务处理函数 任务处理函数形如 type JobFunc func(param interface{}) *GPResult GPResult type GPResult struct { Value interface{} Err error } 执行任务 ApplyAsync(f JobFunc, slice []interface{})… 继续阅读 简单的Golang 协程池