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

Goland的context原理(存在问题,之前根本没有了解,需要更加深入了解)

 context源码

   context.Context可以携带与请求相关的一些关键信息,比如用户 ID、请求 ID 等,在整个请求处理的调用链中,各个函数可以方便地从context中获取这些信息,而无需通过层层传递函数参数的方式。

//  context 包里的方法是线程安全的,可以被多个 goroutine 使用    
type Context interface {               
    // 当Context 被 canceled 或是 times out 的时候,Done 返回一个被 closed 的channel      
    Done() <-chan struct{}        

    // 在 Done 的 channel被closed 后, Err 代表被关闭的原因   
    Err() error 

    // 如果存在,Deadline 返回Context将要关闭的时间  
    Deadline() (deadline time.Time, ok bool)

    // 如果存在,Value 返回与 key 相关了的值,不存在返回 nil  
    Value(key interface{}) interface{}
}

 context介绍

        用来解决goroutine之间退出通知,元数据的功能.

context特点

  • 简洁高效:context提供了一种简洁的方式来处理复杂的场景,避免繁琐的参数传递和错误处理.
  • 可组合性:可以从一个context生成多个context,每个子context都有自己的取消函数和超时时间.
  • 跨函数调用,context可以在不同层级的函数调用中进行传递,使得请求范围的值和取消信号可以子啊整个调用链中传播

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

相关文章:

  • 【力扣】148.排序链表
  • 基础入门-HTTP数据包红蓝队研判自定义构造请求方法请求头修改状态码判断
  • 【DeepSeek】deepseek可视化部署
  • (定时器,绘制事件,qt简单服务器的搭建)2025.2.11
  • 计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)
  • python视频爬虫
  • 前端首屏时间优化方案
  • Python实现机器学习舆情分析项目的经验分享
  • Centos10 Stream 基础配置
  • 数据结构 双链表的模拟实现
  • 【前端】【面试】ref与reactive的区别
  • C# OpenCV机器视觉:模仿Halcon各向异性扩散滤波
  • 利用Ollama本地部署 DeepSeek
  • Java进阶篇之NIO基础
  • 前端常用校验规则
  • AI 编程开发插件codeium Windsurf(vscode、editor) 安装
  • MyBatis-Plus与PageHelper的jsqlparser库冲突问题
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_atomic_cmp_set 函数
  • 网络工程师 (31)VLAN
  • 什么是WebSocket?在Python中如何应用?
  • 性格测评小程序03搭建用户管理
  • ES6~ES11新特性全解析
  • Untiy3d 铰链、弹簧,特殊的物理关节
  • 在 Navicat 17 中扩展 PostgreSQL 数据类型 - 枚举类型
  • 信息安全之网络安全
  • CSS 表单 实现响应式布局