共计 2 篇文章

ngx_lua中的lua协程

Nginx是事件驱动的异步处理方式,Lua语言本身是同步处理,但是Lua原生支持协程,给Nginx与Lua的结合提供了机会。 Nginx可以同时处理数以万计的网络连接,Lua可以同时存在很多协程,简单一点想,对每个到来的网络连接,创建一个新的协程去处理,处理完毕后释放协程。和Apache为每个连接fork一个进程处理的流程十分相似,只不过多个进程换成了多个协程。 协程相比较进程占用资源很小,协程之间的切换性能消耗非常小,几乎就相当于函数调用一样。以同步的方式写程序,实现了异步处理的效率。当然实际的编程实现并没有多进程那么简单。 在Lua中,每个协程对应有一个lua_ ...

Lua中的全局变量与环境

环境的概念 Lua中类型为thread,function和userata的对象都可以关联一个表,称之为环境。环境也是一个常规的table。可以和普通的table一样进行操作,存放与对象相关的各种变量。 关联的thread上的环境只能通过C代码中访问。 关联在userdata上的环境在 Lua 中没有意义。 这个东西只是为了在程序员想把一个表关联到一个 userdata 上时提供便利。 关联在function上的环境用来接管本函数内全局变量的访问。 全局变量 Lua中的全局变量存在放当前函数的环境中,Lua标准库中的函数如setmetable, string.find等注册在函数的环境中, ...