Context上下文包套路入门(1)
context包被称为上下文包go 1.7加入用于协程之间的上下文数据的传递、中止核控制超时。在网络编程中可用于请求的中止比如服务访问链的中止a用户注册-b调用用户服务-c调用积分服务。其中a调用bb调用c。如果由于a和b之间因为某些原因被取消或者超时了那么b和c之间也要取消。Context接口源码解读typeContextinterface{//返回一个超时时间Deadline()(deadline time.Time,okbool)//返回只读channel//一旦可读代表父context发起取消操作通过该方法可以收到此信号//完成协程退出并返回Err()Done()-chanstruct{}//返回context被取消的原因Err()error//获取Context上绑定值根据key线程安全Value(keyinterface{})interface{}}空上下文在进行上下文控制之前首先要创建一个顶层context。go内置包提供了一个方法context.Background()WithTimeout超时自动取消当执行一个go协程时超时自动取消协程packagemainimport(contextfmttime)// 模拟一个最小执行时间的阻塞函数funcincr(aint)int{res:a1time.Sleep(time.Second*1)returnres}// 提供一个阻塞接口// 计算ab注意a,b不能是负数// 如果计算被中断则返回-1funcAdd(ctx context.Context,a,bint)int{fmt.Printf(开始)res:0fori:0;ia;i{resincr(res)select{case-ctx.Done()://父context超时了return-1}}fori:0;ib;i{resincr(res)select{case-ctx.Done()://父context超时了return-1}}returnres}funcmain(){ctx,_:context.WithTimeout(context.Background(),time.Second*2)res:Add(ctx,1,2)fmt.Println(res)//-1}WithCancel 手动取消方法funcmain(){ctx,cancel:context.WithCancel(context.Background())gofunc(){time.Sleep(time.Second*2)cancel()//在调用处主动取消}()res:Add(ctx,1,2)fmt.Println(res)//-1}

相关新闻

iFakeLocation:免费跨平台iOS虚拟定位工具终极指南

iFakeLocation:免费跨平台iOS虚拟定位工具终极指南

iFakeLocation:免费跨平台iOS虚拟定位工具终极指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 你是否想过瞬间"穿越"到世界各地…

2026/10/31 6:38:16 阅读更多 →
掘井故事集(1)

掘井故事集(1)

许多人距离成功只差一步,却因缺乏恒心半途而废。做事贵在持之以恒,浅尝辄止终究一无所获。有个村民想要在家门口挖一口井取水。他连续挖了几天,挖出一个深坑,始终不见水源。他有些烦躁,觉得这里没有地下水,…

2026/11/2 22:27:25 阅读更多 →
PAT甲级 1054 The Dominant Color 找出最多的像素颜色 map打点

PAT甲级 1054 The Dominant Color 找出最多的像素颜色 map打点

Solution&#xff1a; 题目要求&#xff1a;给出一个m x n 的矩阵&#xff0c;每个元素的值代表一种像素颜色&#xff0c;求像素颜色最多的点的颜色。map直接打点就行了。 代码如下&#xff1a; //找出最多的像素颜色、map打点 #include<iostream> #include<math.h>…

2026/11/2 17:38:36 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻