Lua的coroutine跟thread的概念賊相似,但是一個(gè)multi-thread的程序校摩,可以同時(shí)有多個(gè)thread在運(yùn)行,但是一個(gè)multi-coroutine的程序,同一時(shí)間只能有一個(gè)coroutine在運(yùn)行覆致,而且當(dāng)正在運(yùn)行的coroutine只有在被顯式的要求掛起時(shí),才會(huì)掛起肺蔚。
一煌妈、lua將coroutine相關(guān)的所有函數(shù)封裝在表coroutine中。
? ? create函數(shù):創(chuàng)建一個(gè)coroutine宣羊,以該coroutine將要運(yùn)行的函數(shù)作為參數(shù)璧诵,返回類型為thread。
? ? coroutine有四個(gè)不同狀態(tài):suspended(懸掛)仇冯、running之宿、dead、normal
????create之后苛坚,狀態(tài)為suspended比被。
? ? coroutine.resume(恢復(fù))運(yùn)行該coroutine色难,狀態(tài)變?yōu)閞unning。
? ? 運(yùn)行結(jié)束之后:coroutine.status(co)為dead
coroutine的強(qiáng)大之處在:yield函數(shù)等缀,它可以將正在運(yùn)行的coroutine掛起枷莉,并可以在適當(dāng)?shù)臅r(shí)候被重新喚醒,然后繼續(xù)運(yùn)行项滑。