線程模塊(luathread.dll)
新線程池創(chuàng)建,可以指定啟動(dòng)一個(gè)或多個(gè)線程
thread.new('線程入口腳本文件', 線程數(shù)量);
會(huì)根據(jù)線程數(shù)量創(chuàng)建多個(gè)線程,并且分別初始化每個(gè)線程的lua運(yùn)行環(huán)境,并執(zhí)行指定的線程腳本。
tlist = thread.newlist('隊(duì)列類型', '隊(duì)列名稱');
創(chuàng)建一個(gè)同步隊(duì)列,返回隊(duì)列對(duì)象,此對(duì)象必須可以在多個(gè)線程中共享的,而且相同名稱的對(duì)象
只能存在一個(gè)。
tlist:create_new_object();
創(chuàng)建新的對(duì)象,次對(duì)象可以加入到請(qǐng)求隊(duì)列中
tlist:push_request(obj);
將通過create_new_object()創(chuàng)建的對(duì)加入到隊(duì)列中
tlist:wait_for_req(timeout);
等待隊(duì)列中有可以處理的請(qǐng)求
tlist:get_request();
從請(qǐng)求隊(duì)列中取出一個(gè)請(qǐng)求來進(jìn)行數(shù)據(jù)處理
tlist:get_wait_object();
返回可等待對(duì)象,以便腳本可以執(zhí)行多個(gè)對(duì)象的等待任務(wù)
tlist:get_info();
獲得隊(duì)列的一些相關(guān)信息
線程代碼
線程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