协程调度:从用户态线程到Go GMP模型的二十年演进
1963年7月,Communications of the ACM发表了一篇题为《Design of a Separable Transition-Diagram Compiler》的论文。作者Melvin Conway提出了一个当时看来颇为新奇的概念:将编译器的词法分析阶段分解为多个"可以互相挂起和恢复"的执行单元。他将这些执行单元称为"coroutine"——协程。 ...
1963年7月,Communications of the ACM发表了一篇题为《Design of a Separable Transition-Diagram Compiler》的论文。作者Melvin Conway提出了一个当时看来颇为新奇的概念:将编译器的词法分析阶段分解为多个"可以互相挂起和恢复"的执行单元。他将这些执行单元称为"coroutine"——协程。 ...
1964年,Peter Landin在一篇题为《The Mechanical Evaluation of Expressions》的论文中首次提出了"闭包"(closure)的概念。他将闭包定义为一个包含λ表达式及其相关环境的"信息束"。六十年后,这个概念几乎出现在所有现代编程语言中——JavaScript、Python、Rust、Go、Swift、C++、Java——但每种语言的实现方式却大相径庭。 ...