协程的生命周期:
1. 定义:
协程的创建等全部生命历程的管理。通俗的讲就是“保姆”。
它的作用是便于协程的回收利用。
goroutine申请的代价很小,但是在go程序中,goroutine的总量是有上限,超过上限,多余出来的协程就得等到前面的协程完成任务后能开始运行。所以适时的进行回收。
2. 生命周期分类:
- 协程创建
- 协程回收: 由Go语言的GC和垃圾回收机制控制的
- 协程中断: 通过context包实现
3. 如何实现:
- context实现中断
package main
import (
"context"
"fmt"
"sync"
)
func main() {
// 初始化一个context
parent := context.Background()
// 生成一个可取消的context(还有超时取消,超时取消用的比较少)
ctx, cancel := context.WithCancel(parent)
runTimes := 0
var wg sync.WaitGroup
wg.Add