一文带你更方便的控制 goroutine

  • Post author:
  • Post category:其他


上一篇我们讲了

go-zero

中的并发工具包

core/syncx

从整体分析来看,并发组件主要通过

channel + mutex

控制程序中协程之间沟通。

Do not communicate by sharing memory; instead, share memory by communicating.

不要通过共享内存来通信,而应通过通信来共享内存。

本篇来聊

go-zero

对 Go 中

goroutine

支持的并发组件。

我们回顾一下,go原生支持的

goroutine

控制的工具有哪些?


  1. go func()

    开启一个协程

  2. sync.WaitGroup

    控制多个协程任务编排

  3. sync.Cond

    协程唤醒或者是协程等待

那可能会问

go-zero

为什么还要拿出来讲这些?回到

go-zero

的设计理念:

工具大于约定和文档

那么就来看看,

go-zero

提供哪些工具?

threading

虽然

go func()

已经很方便,但是有几个问题:

  • 如果协程异常退出,无法追踪异常栈
  • 某个异常请求触发panic,应该做故障隔离,而不是整个进程退出,容易被攻击

我们看看

core/threading



版权声明:本文为jfwan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。