golang中的context和进程的关系

来源:9-9 总结——万变不离其宗(1)

sadcloud

2020-04-30

老师,您能讲一下就是golang中的context.Context吗,到底应该怎么理解呢,我看项目很多函数第一个参数就是*context ,百度了好多都翻译成上下文,但是我觉得都没有解释清楚,它和进程有什么关系吗,谢谢老师解惑!

写回答

1回答

求老仙

2020-04-30

你把进程想象成一个人, 把这个人放到一个工厂的车间让他装瓶子, 他需要老板的命令, 家里有生活压力,装一个瓶子可以得到一块钱,已经具体装瓶子的技能……。人需要理解这个社会和自己的处境才会工作,否则就无法预测的他的行为。 如果他没有生活压力, 那么下一秒他可能就不会装瓶子而是去找老板辞职。 

计算机设计也是一样,面向对象的核心不是把世界抽象成「死物」,我们希望所有的对象可以思考。 而context就是思考的依据。任何计算机的思考,不能脱离context。 go也是一样,具体到一个任务协同的场景下,每一个主角(routine)需要了解当前是什么情况,他们在当前这些情况中生存和做事情,这个就是context。


最后举一个例子,比如你有个手机, 你给同事用了, 他就去拍照。 从面相对象设计上, 大家会觉得是人拥有拍照的能力。 但其实并不是, 人可以有很多能力。人的能力可以由10000种, 如果这么设计你的Person对象就会无比庞大。 我们的设计应该是我传递一个带有拍照方法的context给同事,同事可以拍照。 而为什么这里可以拍照, 是因为这里有人(动作发起者),场景和手机。 

1
0

大学计算机必修课新讲--编译原理+操作系统+图形学

轻松超越大学课程,前阿里P8专家的实践精华总结

1752 学习 · 157 问题

查看课程