一、概述

1、协程的四种状态

使用coroutine.status(co)来查询协程co当前的状态

  • 挂起(suspended):协程刚刚创建时,协程使用coroutine.yield()把自己挂起
  • 运行(running)
  • 正常(normal):协程A唤醒协程B是,B的状态为运行,A的状态为正常
  • 死亡(dead)

二、协程基础

1、创建一个协程

co = coroutine.create(function() print(123) end)

使用coroutine.create创建协程,返回值是一个thread数据类型。

2、启动协程

coroutine.resume(co)

返回值

正确执行,返回true和协程运行的返回值

错误执行(协程是dead状态),返回false和错误信息

3、协程的挂起

在协程内部使用coroutine.yield()会把协程挂起,当再次调用启动协程时会自动运行,到下一个yield。

4、协程参数的传递

协程创建之后,第一次调用resume的时候可以传递参数。

add = coroutine.create(function(...)
    local total = 0;
    for _, value in ipairs({ ... }) do
        total = total + value;
    end
    print(total)
end)

coroutine.resume(add, 1, 2, 3, 4, 5, 6)
最后修改日期: 2023年10月29日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。