关于 lua 代码的编译和执行,请个温老师几个问题。
问题一。lua 模块中,用 local 关键字定义在**函数外部**的变量,每个 worker 进程只对其在第一次外部请求时进行初始化吗 ?我验证的时候发现有时输出初始值,有时输出改变后的新值,怀疑是不同 worker 进程的输出 ?有点疑惑在此跟你确认下。
问题二。对于非函数的代码块呢?对同个 worker 进程来讲,每次请求都会执行这种代码吗 ?还是仅第一次请求时执行 ?验证时同样结果不是很确定,有时执行,有时又不执行。困惑
类似 lua 代码编译机制,代码在编译器中缓存刷新机制,温老师有无资料分享下 ?我翻了 lua 的官网没找到类似这方面的介绍。
感谢。
展开
作者回复: 前面两个问题,是否可以提供下具体的示例代码呢?只看文字并不直观。
关于 Lua 编译器的细节,我推荐《自己动手实现 Lua 虚拟机、编译器和标准库》这本书,里面很详细的介绍 Lua 虚拟机和编译器的实现。