Lua-协程

简介

示例

co=coroutine.create(
    function()
        print("hi");
    end
)
print(coroutine.status(co));

coroutine.resume(co);
print(coroutine.status(co));
--[[print:
suspended
hi
dead
]]
co=coroutine.create(
    function()
        for i=1,2 do
            print("hi");
            coroutine.yield();
        end
    end
)
coroutine.resume(co);
print(coroutine.status(co));

coroutine.resume(co);
print(coroutine.status(co));

coroutine.resume(co);
print(coroutine.status(co));

coroutine.resume(co);
print(coroutine.status(co));
--[[print:
hi
suspended
hi
suspended
dead
dead
]]
参数及返回值
  • create:返回coroutine,参数是函数
  • resume:返回bool值
  • yield:挂起
  • status:返回状态
  • wrap:返回一个函数,调用这个函数时就开始执行,相当于create+resume
  • running:返回运行的coroutine
-- bool + 函数返回参数
co=coroutine.create(
    function()
        return 4,5;
    end
)
print(coroutine.resume(co,1,2,3));
--[[print:
true 4 5
]]
-- bool + 传入参数多少
co=coroutine.create(
    function(a,b)
        print(a,b);
        coroutine.yield();
    end
)
print(coroutine.resume(co,1,2,3));
--[[print:
1 2 
true
]]
-- bool + yield所有参数
co=coroutine.create(
    function(a,b)
        print(a,b);
        coroutine.yield(a+b,a-b,a*b,a/b);
    end
)
print(coroutine.resume(co,1,2,3));
--[[print:
1 2
true 3 -1 2 0.5         --所有传递给yield的参数都将返回
]]
-- wrap
co=coroutine.wrap(
    function(a)
        return 2*a;
    end
)
c=co(1);
print(c);
--[[print:
2
]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值