引子以前对于函数作用域和栈的关系非常不清晰,只知道栈是系统为一个程序预分配的一块空间,程序的预声明变量都存在系统的栈当中,用malloc*分配的空间则在堆当中。“作用域”和“栈”是一个抽象的概念,并没有深入的理解他们之间的联系。一直以来都对代码如何在计算机中运行这一块饶有兴趣,最近刚好有时间来了解一下这里面的原理。
引子以前对Gevent(Greenlet)为什么比Thread快,只有一个隐约的理解,之前的看到过的说法是,上下文切换的成本上,Greenlet比Thread低很多,但是具体低在哪些地方呢?刚好这段时间阅读了CSAPP,对这个问题又有了新的看待的角度:)参考了如下三篇文章和greenlet的实现:https://www.ibm.com/developerworks/cn/linux/kern...