Lua协程Coroutine是什么

Lua协程Coroutine是什么

协程和线程不同:

  • 同一时刻,一个多线程程序可以用多个线程同时执行;而协程只能有一个在执行
  • 多线程是抢占式的;而协程是非抢占式的,只有协程显示被挂起,才会被挂起

协程和线程的相同点:

  • 拥有独立的栈
  • 拥有独立的局部变量
  • 拥有独立的指针
  • 共享全局变量

API示例:

  • coroutine.create(func) 通过函数创建一个协程
    Lua协程Coroutine是什么
    返回的是一个协程类型

  • coroutine.resume(co, …) 唤醒协程co,后面的参数依次作为协程对应函数的参数
    Lua协程Coroutine是什么

  • coroutine.status(co) 返回协程co的状态
    Lua协程Coroutine是什么

  • coroutine.yield() 在协程内部执行,挂起当前协程
    Lua协程Coroutine是什么

  • coroutine.running() 获取当前处于running状态的协程
    Lua协程Coroutine是什么

  • coroutine.wrap() 创建一个协程,但是返回的是函数类型
    Lua协程Coroutine是什么