首页 > 其他分享 >Golang基础--context的用法

Golang基础--context的用法

时间:2023-05-14 16:55:07浏览次数:41  
标签:context -- goroutine Golang Done Context channel 请求

context包是go并发中常用的包,用于设置截至日期,同步信号,传递请求相关的值。

应用场景

  每一个http请求的request都会启动一个goroutine处理这个请求,后续跟进的这个请求可能还需要访问数据库,做安全验证,访问控制,日志记录等,这时候就会

由最早的goroutine启动后续的多个goroutine,这样就会有多个goroutine处理一个request。而context的作用就是在这几个不同的goroutine之间同步特定数据,取消信

号,以及处理请求的截至日期。

定义

这里我列出了Context的接口代码,方便更加深入的讨论context的实现细节。  

type Context struct{
    Deadline() (deadtime time.Time,ok bool)
    Done() <- chan struct{}
    Err() error
    Value(key interface{}) interface{}
}
  • Deadline() :需要返回当前Context被取消的时间,也就是截止时间
  • Done():需要返回一个channel,该channel会在工作完成或者Context被取消时关闭,多次调用Done()方法返回的是同一个channel
  • Err():用于返回当前Context结束的原因
  • Value():用于取得当前Context绑定的值

 

标签:context,--,goroutine,Golang,Done,Context,channel,请求
From: https://www.cnblogs.com/99kol/p/17399578.html

相关文章

  • 富文本编辑器的下载和使用
    目录富文本编辑器:下载用法编辑器使用方法1.下载编辑器2.部署编辑器3.修改HTML页面4.获取HTML数据参数使用富文本编辑器:kindeditor的使用为例http://kindeditor.net/demo.php下载用法只有这俩有用其他使用方法看文档说明编辑器使用方法1.下载编辑器下载KindEdi......
  • 关键词:Transactive energy,微电网 配网 参考文档:《Optimal
    关键词:Transactiveenergy,微电网配网参考文档:《OptimalEnergyManagementforMulti-MicrogridUnderaTransactiveEnergyFrameworkWithDistributionallyRobustOptimization》2021一区半完美复现仿真平台:MATLABYALMIPGUROBI主要内容:我们制定了一个基于交易能量(TE)框架的......
  • 每日总结
    今天截止到目前我完成了web的作业实验3和pythoin作业的实验3和4,并且我还把我的青马培训的笔记和心得体会写完了,计算机网络的作业还没完成今天晚上要把它写完了,马上临近期末考试,该要冲刺冲刺来了,昨天晚上我学习了数据库这门科目的一点知识:文件系统不能解决数据冗余和数据独立性问......
  • BBS-注册功能
    目录一、添加路由二、注册功能前端模板前端步骤:前端代码前端重点操作注册功能图片实时展示注册功能ajax提交数据三、添加视图函数后端步骤后端代码重点功能:上传图片头像图片实时展示ajax方式提交给后端数据一、添加路由在路由urls.py中要先导入视图层和一些用到的模块fr......
  • spring遇到的几个错误(5.14)
     先保存配置文件file→ProjectStructure→Modules 详细问题 ......
  • 5-1liunx虚拟机内存分配
    一、虚拟机硬件配置1.CPU:2核或更多2.内存:1G以上,推荐2G。3.硬盘:一块硬盘,200G。4.网卡:NAT模式。5.光盘:挂载对应版本的ISO文件。二、ISO下载地址:Centos http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.comUbuntu https://cdimage.ubuntu.com......
  • Java 网络编程 —— 非阻塞式编程
    线程阻塞概述在生活中,最常见的阻塞现象是公路上汽车的堵塞。汽车在公路上快速行驶,如果前方交通受阻,就只好停下来等待,等到公路顺畅,才能恢复行驶。线程在运行中也会因为某些原因而阻塞。所有处于阻塞状态的线程的共同特征:放弃CPU,暂停运行,只有等到导致阻塞的原因消除,才能恢复运行,......
  • 接MATLAB各类问题,难度不限。 编程,画图,定制,调试,debug等。 依据
    接MATLAB各类问题,难度不限。编程,画图,定制,调试,debug等。依据任务难度报价,详细请加好友。ID:521681885430880......
  • 5-2liunx的终端和运行命令
    1.显示当前主机的主机名:hostname2.执行的程序:psaux3.过滤程序:hostname|grepbash 4.shell类型:echo$SHELL5.当前支持的shell类型:cd/etc/shells6.安装shell:yum-yinstallcsh7.临时修改主机名:hostnamecentos88.永久修改主机名:hostnamectlset-hostnamecentos8 ......
  • 5 -1liunx远程连接和基础操作
    1.查看当前机器地址:hostname-I2.远程登录命令:sshroot@ip端口3.重启:reboot4.关机:poweoff5.切换用户sudo-i 或sudosu6.占用内存:free-h7.关掉图形页面:init38.开启图形页面:init59.当前是图形还是字符页面:runlevel10.当前身份:whoami11.当前窗口设备的名称:tty12......