获得徽章 0
- #新人报道# 打卡第一天,Go 语言官方库给我们一贯的印象是:强大、好用。但是,金无足赤,人无完人,在一些性能要求苛刻的场景例如 json 解析,所以有些外部库也很重要
评论2 - #挑战每日一条沸点# 收到一个假期2个月的后端实习,工资1600/月,不包食宿,9:00-18:00,位置在学校附近,可以假期留校住宿。自己也是第一次准备实习,下学期就大三了。这个实习offer大家觉得可以去嘛
。感觉工资好少,但又想作为一次实习经历,兄弟们求教,帮忙分析分析 33 - #青训营 x 字节后端训练营# day11
今天不知道写什么,就总结一下今天看到的关于优雅关闭服务端的一些思路吧
1.使用两个channel实现:主协程收到关闭signal后使用channel1通知子协程,子协程监听channel1,在收到channel1发来的通知后,在结束手头的任务后使用channel2通知主协程关闭程序。
2.使用嵌套channel:主协程收到关闭signal后make一个channel2并将其写入channel1(chan chan struct{}),子协程监听channel1,在收到发送过来的channel2后,在结束手头的任务后向channel2中写入信息通知主协程关闭程序,主协程收到channel2发送的信息后关闭程序
3.使用context + sync.WaitGroup:声明一个waitgroup,使用waitgroup的add方法控制子协程的生命,当主协程收到中断信号后,cancle() 掉 ctx,当子协程从ctx.Done()方法中读到数据,则会在结束手头的任务后defer waitgroup的Done方法关闭子协程,主协程waitgroup的wait()方法在等待所有子协程关闭后就会自行关闭程序。展开评论1
![[坏笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_41.2751fc1.png)
。各位一起加油吧!![[奋斗]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_29.2801857.png)
。感觉工资好少,但又想作为一次实习经历,兄弟们求教,帮忙分析分析