Lua標(biāo)準(zhǔn)庫(kù) - 協(xié)同程序處理
協(xié)同程序處理庫(kù)是lua標(biāo)準(zhǔn)庫(kù)的子類庫(kù),可以視作線程使用
1、coroutine.create (f)
功能:建立一個(gè)新的協(xié)同程序,f為入口函數(shù),返回一個(gè)"thread"的值
2、coroutine.resume (co [, val1, ···])
功能:第一次調(diào)用resume時(shí),將要啟動(dòng)線程,val1...為傳入f的參數(shù)
當(dāng)線程因調(diào)用yield掛起,可以用resume繼續(xù)運(yùn)行線程,val1...為最近一次調(diào)用yield的返回值
co為coroutine.create (f)返回的值
當(dāng)resume出錯(cuò)返回時(shí),resume返回false加錯(cuò)誤信息;否則返回true加傳回yield的值(當(dāng)線程掛起)
3、coroutine.running()
功能:返回正在進(jìn)行的線程,在主線程調(diào)用將返回nil
4、coroutine.status(co)
功能:返回指定線程的當(dāng)前狀態(tài)
"running":正在運(yùn)行
"suspended":因調(diào)用yield而被掛起或者線程還沒(méi)有啟動(dòng)
"normal":線程是活動(dòng)的但沒(méi)有啟動(dòng)
"dead":當(dāng)線程已運(yùn)行完畢或發(fā)生錯(cuò)誤而停止
5、coroutine.wrap(f)
功能:以函數(shù)方式建立一個(gè)新線程,f為入口函數(shù)。返回值為一個(gè)函數(shù),每次調(diào)用都將會(huì)自動(dòng)啟動(dòng)線程,出錯(cuò)信息會(huì)反射給調(diào)用者
6、coroutine.yield (···)
功能:掛起正在執(zhí)行的線程,線程不能執(zhí)行C函數(shù)、元表方法、迭代器,所以傳給yield的參數(shù)都會(huì)作為最近一次調(diào)用resume的返回值
原文鏈接:http://tech.it168.com/j/2008-02-17/200802171033951.shtml