Skip to content

minph/pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pool

简易 Golang 协程并发任务库

import "github.com/minph/pool"

示例

package main

import (
	"fmt"
	"github.com/minph/pool"
)

func main() {

	p := pool.New(10)
	data := make(chan string)

	go p.Start(func(app *pool.App, index int) {
		msg := fmt.Sprintf("这是协程%v", index)
		data <- msg
	})

	for !p.Done() {
		msg := <-data
		fmt.Println(msg)
	}
}

也可以使用封装程度更高的 API

package main

import (
	"fmt"
	"github.com/minph/pool"
)

func main() {

	p := pool.New(10)
	data := make(chan string)

	p.Run(func(app *pool.App, index int) {
		msg := fmt.Sprintf("这是协程%v", index)
		data <- msg
	}, func(app *pool.App) {
		msg := <-data
		fmt.Println(msg)
	})
}

概览

详情

type App

type App struct {
    // 协程总数
    Routine int
    // contains filtered or unexported fields
}

App 协程池本体

func New

func New(routine int) *App

New 创建协程池

func (*App) After

func (a *App) After(afterFunc AppFunc) *App

After 设置任务结束后执行函数

func (*App) Before

func (a *App) Before(beforeFunc AppFunc) *App

Before 设置任务开启前执行函数

func (*App) Counter

func (a *App) Counter() int

Counter 获取剩余协程数

func (*App) Done

func (a *App) Done() bool

Done 判断是否结束所有协程

func (*App) OnceDone

func (a *App) OnceDone(onceDoneFunc AppFunc) *App

OnceDone 设置任一协程结束时触发函数

func (*App) Run

func (a *App) Run(runFunc RunFunc, waitFunc AppFunc) *App

Run 运行协程

func (*App) SetTask

func (a *App) SetTask(from, to int) *App

SetTask 设置任务区间

func (*App) Start

func (a *App) Start(doFunc RunFunc) *App

Start 开启协程

func (*App) Task

func (a *App) Task(index int) (int, int)

Task 获取子任务区间

type AppFunc

type AppFunc func(a *App)

AppFunc 协程开关函数

type RunFunc

type RunFunc func(a *App, index int)

RunFunc 协程运行时函数