golang context管理channel

server/2024/9/24 21:14:28/

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

package mainfunc 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.ppmy.cn/server/121507.html

相关文章

JAVA基础面试题-JDK1.8特有的工具类包有哪些?

JDK 1.8&#xff08;也称为Java 8&#xff09;引入了许多新的特性和改进&#xff0c;其中一些新加入的工具类和功能增强容易被问道。 1、java.time 这个包是Java 8新增的时间日期API&#xff0c;它提供了更加丰富和易用的日期时间处理功能。这个包包括了LocalDate、LocalTime…

Centos中dnf和yum区别对比

dnf和yum是两种不同的包管理工具&#xff0c;它们各自具有独特的特点和优势&#xff0c;主要用于在Linux系统上安装、更新和卸载软件包。以下是dnf和yum之间的主要区别&#xff1a; 1. 依赖关系解决 dnf&#xff1a;dnf在处理依赖关系方面表现出更强的能力。它能够更高效地解…

Redis中的setnx的使用场景

Redis中的SETNX命令是一个非常有用的工具&#xff0c;特别是在处理分布式系统和并发控制时。SETNX是“Set if Not Exists”的缩写&#xff0c;用于设置键的值&#xff0c;但仅当键不存在时。以下是SETNX命令的一些主要使用场景&#xff1a; 1. 分布式锁 在分布式环境中&#…

Spring Boot 中实现任务后台处理的几种常见方式

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 在现代应用程序中&#xff0c;后台处理对于处理发送电子邮件、处理文件、生成报告等任务至关重要。 Spring Boot 提供了多种机制来高效地实现后台任务。本文探讨了在 Spring Boot 中处理后台处理的各…

软件开发人员利用Mendix推动GenAI战略

企业软件供应商应该谨慎对待某些生成式人工智能&#xff08;AI&#xff09;工具对数据、流程和文化造成的风险。然而&#xff0c;推迟实施AI战略的风险更大。 随着软件开发人员学习如何使用GenAI简化编码流程&#xff0c;他们的产出速度和质量将大幅提高&#xff0c;从而将竞争…

vue3ElementPlus使两个日期联动控制(限制结束时间为开始时间的一个月)

vue3ElementPlus两个日期联动控制(限制结束时间为开始时间的一个月) 代码展示 <template><div><el-date-pickerv-model"startDate"type"date"placeholder"选择开始日期"change"handleStartChange"></el-date-p…

数据结构与算法——Java实现 11.习题——有序链表去重

目录 82. 删除排序链表中的重复元素 II 方法1 方法2 要知道&#xff0c;每一颗钻石在被发现前&#xff0c;都要经受埋藏尘埃的寂寞时光 —— 24.9.23 82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0…

【设计模式-适配】

Adapter Pattern&#xff08;适配器模式&#xff09; 是一种结构型设计模式&#xff0c;其主要目的是让不兼容的接口能够协同工作。适配器模式通过引入一个适配器类&#xff0c;转换一个类的接口&#xff0c;使得原本不兼容的接口可以互相配合&#xff0c;从而实现接口的兼容性…