【lua-1】luaproc分析
项目地址: http://luaforge.net/projects/luaproc/
项目介绍: luaproc is a concurrent programming library for Lua. It implements an approach, geared towards massive concurrency support, which uses multiple indepedent lua_States as lightweight user threads ("Lua processes") and kernel threads as workers.
中文释义: luaproc是lua的一个并发编程库,它通过实现多个轻量级的用户线程(lua process/每个用户线程绑定有一个独立的lua_State)以及多个worker线程(内核线程)的方法提供了对lua并发编程的支持.
注意:其中轻量级的用户线程不是实际生活中我们知道的线程,可以参考lua协程的概念! worker线程指的就是真正的线程.
下载项目文档下来,解压后可以看到整个工程由这几个文件组成:
list.h/c 链表的实现
channel.h/c channel的实现
luaproc.h/c/lua 对lua提供了库的使用接口
sched.h/c worker线程调度执行用户线程代码的实现
test.lua 项目自带的测试文件
总体设计原理图解:
从原理图可以看到,用户可以灵活控制worker线程的数目(即真正执行任务的线程数目)。lua代码中newproc的操作将会创建具有独立lua_State的lua process(用户线程),这里的lua process并不能单独执行,其最终的执行是由worker执行的。
从这里我们也可以发现,以往 lua中单线程执行的任务 在这里可以把任务分解到多个lua process中,workers从 lua process 的Ready Queue中取得用户线程来运行,以此使用多线程来提高运行效率。