Lua协程Coroutine是什么
协程和线程不同:
- 同一时刻,一个多线程程序可以用多个线程同时执行;而协程只能有一个在执行
- 多线程是抢占式的;而协程是非抢占式的,只有协程显示被挂起,才会被挂起
协程和线程的相同点:
- 拥有独立的栈
- 拥有独立的局部变量
- 拥有独立的指针
- 共享全局变量
API示例:
-
coroutine.create(func) 通过函数创建一个协程
返回的是一个协程类型 -
coroutine.resume(co, …) 唤醒协程co,后面的参数依次作为协程对应函数的参数
-
coroutine.status(co) 返回协程co的状态
-
coroutine.yield() 在协程内部执行,挂起当前协程
-
coroutine.running() 获取当前处于running状态的协程
-
coroutine.wrap() 创建一个协程,但是返回的是函数类型