LUA 牛逼的coroutine
2018-05-10 本文已影响0人
银赫大公子EunHyuk
Lua的coroutine跟thread的概念贼相似,但是一个multi-thread的程序,可以同时有多个thread在运行,但是一个multi-coroutine的程序,同一时间只能有一个coroutine在运行,而且当正在运行的coroutine只有在被显式的要求挂起时,才会挂起。
一、lua将coroutine相关的所有函数封装在表coroutine中。
create函数:创建一个coroutine,以该coroutine将要运行的函数作为参数,返回类型为thread。
coroutine有四个不同状态:suspended(悬挂)、running、dead、normal
create之后,状态为suspended。
coroutine.resume(恢复)运行该coroutine,状态变为running。
运行结束之后:coroutine.status(co)为dead
coroutine的强大之处在:yield函数,它可以将正在运行的coroutine挂起,并可以在适当的时候被重新唤醒,然后继续运行。