线程模块(luathread.dll)
新线程池创建,可以指定启动一个或多个线程
thread.new('线程入口脚本文件', 线程数量);
会根据线程数量创建多个线程,并且分别初始化每个线程的lua运行环境,并执行指定的线程脚本。
tlist = thread.newlist('队列类型', '队列名称');
创建一个同步队列,返回队列对象,此对象必须可以在多个线程中共享的,而且相同名称的对象
只能存在一个。
tlist:create_new_object();
创建新的对象,次对象可以加入到请求队列中
tlist:push_request(obj);
将通过create_new_object()创建的对加入到队列中
tlist:wait_for_req(timeout);
等待队列中有可以处理的请求
tlist:get_request();
从请求队列中取出一个请求来进行数据处理
tlist:get_wait_object();
返回可等待对象,以便脚本可以执行多个对象的等待任务
tlist:get_info();
获得队列的一些相关信息
线程代码
线程1:
local tlist = thread.newlist('test', 'test0');
local d = tlist:create_new_object();
d:setdata('test', 'hello world');
tlist:push_request(d);
线程2:
local tlist = thread.newlist('test', 'test0');
while(tlist:wait_for_request(1000)) do
local d = tlist:get_request();
handlesomething(d);
end