零基础学lua第十二天---协程

零基础学lua第十二天—协程

一、前言

lua为我们引入了协程,协程相当于一段独立执行的线程,协程需要彼此之间运行,所以同时只能运行一个协程;协程有四种状态:运行、挂起、正常、销毁;下面就让我们先来简单的了解下协程的使用吧。

二、协程的创建

协程创建有两种方法。

1.直接创建

在这里插入图片描述

这种方式创建好的协程是无法直接运行的,需要我们使用resume来启动,而且我们看到协程创建后返回的是一个线程。

2.间接创建

在这里插入图片描述

这种方法创建的协程相当容易,他会返回一个函数,我们直接调用这个函数即可。而且它的线程信息是隐藏的,不过我们也可以获取到,如下:

print(coroutine.running())

三、协程状态

lua提供了四种协程状态,我们可以使用status方法来获取到当前协程的状态,如下:

在这里插入图片描述

一般运行状态的话,必须是一个协程调用另一个协程才能引发这种状态。

四、协程挂起

当我们的协程被挂起的时候,相当是每隔一段时间做了一件事,这也就是所谓的计时器的由来,如下:

在这里插入图片描述

我们执行了两次就打印了两次结果,不过由于我们给定的变量的值为10,因此到10的时候协程被销毁。而且协程一般返回的是布尔值,如下:

在这里插入图片描述

五、判断协程的重要性

我们在执行程序时,会有很多协程一起执行,这个时候就需要给协程一个顺序,lua提供了一个方法用来判断当前协程是否可以被中止,如下:

print(coroutine.isyieldable())

这个方法在lua最新版本中才提供支持。

六、消费者生产者

上面就是我们所说的关于协程的所有知识了,不过光学这个还不行,我们可以使用协程来模仿下线程中消费者和生产者,如下:

在这里插入图片描述

我们现在生产者中创建一个协程用来发送物品到消费者,消费者接收到后直接吃掉这个物品然后生产者再次发送物品,就这样循环着。

六、总结

本章小编和大家主要讲到了关于协程的概念,难度不高,不过要想融会贯通也不是很容易,因为协程往往会伴随着更多的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_30852573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值