起因是在学 openresty 的时候官方 lua-nginx-module 里官方介绍
ngx.timer.at 的使用方法,介绍了一种定时器的写法

这是用递归调用实现的定时器,查看源码
ngx.timer.at 是异步的,使用时是创建一个 coroutine 运行子函数。
一般来说无限递归调用自身会导致栈溢出,但是这个例子我测试了并不会栈溢出。
于是测试了 golang 的在函数中开启协程递归调用自身:

测试 python3 在函数中开启线程递归调用自身:

上面这两个也并不会产生栈溢出,请问这是为什么呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/866253
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.