go官方源码
文章平均质量分 95
杨桃不爱程序
无人扶我青云志,我自踏雪至雪巅
展开
-
深入解析go Timer 和Ticker实现原理
1 timertimer 简单来说就是1 个定时器,代表多少秒后执行,当创建1个timer,1秒钟过后,我们就能从timer.C 获取那个时刻的时间,因为系统在那个时刻将当前时间写入到timer.C 了,这时候我们就可以做自己的想做的事了。package mainimport ( "fmt" "time")func main() { timer:=time.NewTimer(1*time.Second) defer timer.Stop()原创 2021-11-07 14:29:29 · 1256 阅读 · 0 评论 -
深入解析go context 源码
1介绍及使用场景相信大家都经历过面试官的灵魂拷问:context 的作用是啥??父context取消后,子context会立即取消吗?今天让我们深入了解context,然后继续被面试官虐(* ̄︶ ̄)context 是Go 1.7 引入标准库,被称作上下文,通常在goroutine间传递上下文,作用包括取消信号、超时控制、k-v 传递。k-v 传递通常用来做分布式链路追踪,上下文传值。在一些需要超时控制的场景我们经常会看到它的身影,比如sql 里面,像ping 这样的场景,ping 什原创 2021-10-24 19:24:03 · 469 阅读 · 1 评论 -
一文读懂 go 互斥锁 mutex 源码
1介绍互斥锁是并发控制的一个基本手段,是为了避免竞争而建立的一种并发控制机制。简单来说就是控制并发比如下面能得到我们想要的结果吗?func main() { sum :=0 var w sync.WaitGroup for i:=0;i<1000;i++{ w.Add(1) go func() { defer w.Done() sum+=1 }() } ..原创 2021-09-25 22:04:17 · 571 阅读 · 0 评论 -
深入解析 go sync.map 源码
在实际开发项目中,常常有并发操作map 的情况,但是go官方map 并不支持并发读写,这时候可能需要用到sync.map 了。在项目中其实sync.map 更适用于少写的情况,比如服务器启动注册某些东西到map里面,后面服务器启动后几乎是只读了。自己面试亲身经历:面试官:在实际生产中,可能会有并发写map 的情况,balabala.....我:sync.map 可以解决这些事情面试官:它的应用场景?我:读多写少,源码,官方,性能测试都证明了面试官:使用sync.map有没有遇到过问.原创 2021-09-21 13:46:08 · 296 阅读 · 0 评论