【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中取得用户线程来运行,以此使用多线程来提高运行效率。

posted @ 2013-06-15 17:30  michael111  阅读(712)  评论(0编辑  收藏  举报