协程是个很好的东西,它能做的事情与线程相似,区别在于:协程是使用者可控的,有API给使用者来暂停和继续执行,而线程由操作系统内核控制:另外,协程也更加轻量级.这样,在遇到某些可能阻塞的操作时,可以使用暂停协程让出CPU:而当条件满足时,可以继续执行这个协程.目前在网络服务器领域,使用Lua协程最好的范例就是ngx_lua了 来看看Lua协程内部是如何实现的. 本质上,每个Lua协程其实也是对应一个LuaState指针,所以其实它内部也是一个完整的Lua虚拟机-有完整的Lua堆栈结构,函数调用栈等