Lua协程例子

lua的协程是好东西,跟unity的协程还是不太一样,下面写了一个例子,直接上代码:

co=coroutine.create(function ()
    -- body
     print "hi coroutine";
end)
print(type(co));
print(coroutine.status(co));
coroutine.resume(co)
print(coroutine.status(co));

print "-------------------------------";
print "-------------------------------";

co1=coroutine.create(function ()
    -- body
     print "hi coroutine";
     coroutine.yield();
     print "yield end start";
end)
print(type(co1));
print(coroutine.status(co1));
coroutine.resume(co1)
print(coroutine.status(co1));
coroutine.resume(co1)
print(coroutine.status(co1));
print "-------------------------------";
print "-------------------------------";

co2=coroutine.create(function ()
     for i=1,10 do
        print("item",i)
        coroutine.yield();
     end
end)
print(type(co2));
print(coroutine.status(co2));
coroutine.resume(co2)
print(coroutine.status(co2));
print("main 1")
coroutine.resume(co2)
print(coroutine.status(co2));
print("main 2")
print "-------------------------------";
print "-------------------------------";

--lua中协程可以通过resume-yield来交换数据
--1.通过resume把参数传递给协同主程序
co3=coroutine.create(function (a,b)
    -- body
    print("co",a,b);
end)
print(coroutine.resume(co3,1,2))
print "-------------------------------";
print "-------------------------------";
--2.数据通过yield传递给resume,true表示传递成功,true之后的部分即是yield的参数
co4=coroutine.create(function (a,b)
    -- body
    coroutine.yield(a+b,a-b);
end)
print(coroutine.resume(co4,1,5)) 
--3.把resume的参数传递给yield
print "-------------------------------";
print "-------------------------------";
co5=coroutine.create(function ()
    -- body
    print("co5",coroutine.yield());
end)
coroutine.resume(co5);
coroutine.resume(co5,4,5);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值