当前位置: 首页 > article >正文

golang context管理channel

如果多个协程之间有一定的生命周期关系,可以使用context去做退出管理。
如下图,上游的ctx只能执行很快就被cancel了,此时那启动的子协程也没有继续运行的必要,所以此时子协程也监控上游的状态,上游一结束,子协程也直接关闭了

package main


func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
	

	go handle(ctx, 500*time.Millisecond)
    cancel()
}

func handle(ctx context.Context, duration time.Duration) {
	select {
	case <-ctx.Done():
		fmt.Println("handle", ctx.Err())
	case <-time.After(duration):
		fmt.Println("process request with", duration)
	}
}

参考
https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-context/


http://www.kler.cn/a/318827.html

相关文章:

  • 《深度解析 C++中的弱引用(weak reference):打破循环依赖的利器》
  • Chrome使用IE内核
  • springboot项目中,使用ProGuard 对代码进行混淆
  • 【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
  • D67【python 接口自动化学习】- python基础之数据库
  • MTSET可溶于DMSO、DMF、THF等有机溶剂,并在水中有轻微的溶解性,91774-25-3
  • 【数据库】sqlite
  • 【C++】托管类和托管函数
  • 大模型备案和互联网算法备案的区别?
  • Linux软件包管理器、Linux开发工具、vim的配置等的介绍
  • RabbitMQ简介
  • AI产品经理必知的133个专业术语
  • 高阶函数(Higher-Order Function)
  • 高侧电流检测电路设计
  • [新闻]Tom Sawyer Software宣布发布SysML v2 Viewer
  • GLM-4-9B 是智谱 AI 推出的预训练模型 GLM-4 系列中的开源版本
  • Pytest-allure如何在测试完成后自动生成完整报告?
  • 占领矩阵-第15届蓝桥省赛Scratch中级组真题第5题
  • 桥梁轻量化结构监测系统解决方案
  • [OPEN SQL] SELECT语句
  • Android JNI 调用流程
  • 深入理解主键回显:提升数据操作效率与准确性
  • 目标检测系列(一)什么是目标检测
  • OpenMV与STM32通信
  • 稳了,搭建Docker国内源图文教程
  • Mysql梳理10——使用SQL99实现7中JOIN操作