作业
- 必做:封装⼀个数据结构 MyMap,实现并发安全的
Load,Store,Delete,LoadAndDelete,LoadOrStore
⼏个API(禁⽌使⽤ sync.Map),不⽤考虑性能
- 选做:编写 benchmark,⽐较 MyMap 与 sync.Map 的同名函数性能差异,输出相应的性能报告(注意,你应该使⽤ RunParallel),将性能⽐较结果输出为 markdown ⽂件
- 选做:使⽤ channel 实现⼀个 trylock,模板 trylock.go
- 选做:修复 deadlock.go 的死锁
- 选做:在 context 学习过程中,我们知道,在⼦节点中 WithValue 的数据,⽗节点是查不到的。请实现⼀个 MyContext,其 WithValue ⽅法赋值的 k,v 在⽗节点中也可以查得到。模板:mycontext.go
- 选做难度++:实现,或封装社区的 timewheel,使⽤ benchmark 或 pprof ⽐较⼤量 timer 存活时,内置 timer 和 timewheel 的性能差异。不要求提交代码,只需要性能对⽐报告 markdown。
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!
微信支付
支付宝