context使用

Go语言第一形参通常都为context.Context类型,1. 传递上下文 2. 控制子Goroutine超时退出 3. 控制子Goroutine定时退出

package main

import (
"context"
"fmt"
"time"
) func main() {
ctx, cancel := context.WithTimeout(context.TODO(), 5*time.Second)
defer cancel() go func(ctx context.Context) {
execResult := make(chan bool) // 模拟业务逻辑
go func(execResult chan<- bool) {
// 模拟处理超时
time.Sleep(6 * time.Second)
execResult <- true
}(execResult) // 等待结果
select {
case <-ctx.Done():
fmt.Println("超时退出")
return
case <-execResult:
fmt.Println("处理完成")
return
}
}(ctx)
time.Sleep(10 * time.Second)
}

go context 子Goroutine超时控制的更多相关文章

  1. 四种方式实现子goroutine与主线程的同步

    如何实现子goroutine与主线程的同步 第一种方式: 这种方式很太死板,就不演示了. 第二种方式:使用 channel机制,每个 goroutine传一个 channel进去然后往里写数据,在再主 ...

  2. Go语言标准库之context

    在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务.用来处理一个请 ...

  3. Go标准库Context

    在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务.用来处理一个请 ...

  4. Go标准库之Context

    文章引用自   Go标准库Context 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服 ...

  5. 九. Go并发编程--context.Context

    一. 序言 前几篇中提到 等待多个 goroutine 协作的方式可以使用WaitGroup. 但是有一种场景我们无论是使用Mutex, sync/Once,都无法满足. 场景如下 现在有一个 Ser ...

  6. golang中的标准库context

    在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务.用来处理一个请 ...

  7. 理解Go Context机制

    1 什么是Context 最近在公司分析gRPC源码,proto文件生成的代码,接口函数第一个参数统一是ctx context.Context接口,公司不少同事都不了解这样设计的出发点是什么,其实我也 ...

  8. golang标准库 context的使用

    本文索引 问题引入 context包简介 示例 问题引入 goroutine为我们提供了轻量级的并发实现,作为golang最大的亮点之一更是备受推崇. goroutine的简单固然有利于我们的开发,但 ...

  9. Golang context包解读

    Context 通常被译作 上下文 ,一般理解为程序单元的一个运行状态.现场.快照,而翻译中 上下 又很好地诠释了其本质,上下上下则是存在上下层的传递, 上 会把内容传递给 下 . 在Go语言中,程序 ...

  10. go context 讲解

    控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context. 什么是WaitGroup WaitGroup以前我们在并发的时候介绍过,它是一种控制并发的 ...

随机推荐

  1. 解决phpmyadmin导入MYSQL数据库限制大小为50M的问题

    有时候想导入的数据库太大.但是遭到的限制 解决phpmyadmin导入MYSQL数据库限制大小为50M的问题 转载于:https://www.cnblogs.com/wesky/p/10609340. ...

  2. Qt编写视频监控系统72-通过onvif增删改查OSD

    一.前言 之前监控系统中原创的onvif协议解析机制,已经能够满足绝大部分用户的需要,比如搜索设备.获取视频流地址并播放.云台控制.预置位管理.图片亮度色彩饱和度等参数设置等,近期又多了一个需求,那就 ...

  3. JVM实战—3.JVM垃圾回收的算法和全流程

    大纲 1.JVM内存中的对象何时会被垃圾回收 2.JVM中的垃圾回收算法及各算法的优劣 3.新生代和老年代的垃圾回收算法 4.避免本应进入S区的对象直接升入老年代 5.Stop the World问题 ...

  4. biancheng-Mybatis框架

    目录http://c.biancheng.net/mybatis/ 1MyBatis是什么2MyBatis和Hibernate的区别3MyBatis下载4第一个MyBatis程序5MyBatis核心对 ...

  5. Markers pg walkthrough Intermediate

    发现是个md 变成pdf 的功能站 上网查exp 发现先了一个有用的 https://security.snyk.io/vuln/SNYK-JS-MARKDOWNPDF-5411358 能够任意文件读 ...

  6. rust体验感受,Rust标准库需要还需加强

    了解到Rust的跨平台编译和安全性,尝试用rust写一个http调用的程序,换了几个http client库都失败了,感觉rust语言还有较大的进步空间. 环境 OS: windows 11 rust ...

  7. ORACLE事物隔离级别和脏读、幻读、不可重复读区别

    一.事务和隔离级别 事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性. 隔离级别:隔离级别定义了事务与事务之间的隔 ...

  8. PostgreSQL:数据库迁移与版本控制

    title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...

  9. 如何让JS代码变的安全?

    本文分享自天翼云开发者社区<如何让JS代码变的安全?>,作者:温****双 前端JS代码,直接暴露在浏览器中,任何访问者,都可以随意查看代码.这就导致代码可以被分析.复制.盗用等,进而引发 ...

  10. Ceph PG状态介绍

    本文分享自天翼云开发者社区<Ceph PG状态介绍>,作者:wwwdl 一.基本概念 size:副本数(如三副本,size=3): min_size:支持可读写的最小副本数(如三副本,mi ...