golang ants pool流程图
2021-04-29 15:01:54 0 举报
golang ants pool
作者其他创作
大纲/内容
-C
容量已满时(循环)
pool已满
获得一个可用的worker来处理任务worker:=retrieveWorker()
go run()启动一个goroutine来处理任务
初始化实例
已经阻塞的超过最大值
将任务添加到worker中worker.task<- func()
pool没有关闭
time.NewTicker
Pool实例
设置sync.pool的new方法
直接返回
NewPoolWithFunc
如果pool没有满,则可以归还
如果是不限制容量的pool
初始化sync.cond
worker Pool
运行的worker小于容量限制时
goroutine
再次尝试从pool中获取
初始化完成
通过sync.pool创建一个worker
提交一个任务到pool中
有限容量的pool没有满
将worker归还到pool中revertWorker()
初始化Pool
正在运行的worker数量为0
size + option
purgePeriodically()定期清理过期的worker
加入sync.cond等待队列
NewPool
有可用的worker
没有可用的worker
收藏
收藏
0 条评论
下一页