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