image.png

烹饪方式设计

image.png
image.png
image.png
image.png
image.png
image.pngimage.png

烹饪方式优化

image.pngimage.png

代码示例

image.png
image.png

多协程生命周期

image.png

代码示例

package _main _import (

“context” “sync” “fmt”)

_func _main() {

_// 初始化一个context _parent := context.Background()

_// 生成一个取消的context _ctx, cancel := context.WithCancel(parent)

runTimes := 0 _var _wg sync.WaitGroup wg.Add(1)

go func(ctx context.Context) {

  1. _for _{
  2. _select _{
  3. _case _<-ctx.Done():
  4. fmt.Println("Goroutine Done")
  5. _return default_:
  6. fmt.Printf("Goroutine Running Times : %d\n",runTimes)
  7. runTimes = runTimes + 1 }
  8. _if _runTimes > 5 {
  9. cancel()
  10. wg.Done()
  11. }
  12. }

}(ctx)

wg.Wait()

fmt.Println(“main Done !”)

}