零基础学lua第十二天---协程
作者:互联网
lua为我们引入了协程,协程相当于一段独立执行的线程,协程需要彼此之间运行,所以同时只能运行一个协程;协程有四种状态:运行、挂起、正常、销毁;下面就让我们先来简单的了解下协程的使用吧。
二、协程的创建协程创建有两种方法。
1.直接创建这种方式创建好的协程是无法直接运行的,需要我们使用resume来启动,而且我们看到协程创建后返回的是一个线程。
2.间接创建这种方法创建的协程相当容易,他会返回一个函数,我们直接调用这个函数即可。而且它的线程信息是隐藏的,不过我们也可以获取到,如下:
print(coroutine.running())
三、协程状态lua提供了四种协程状态,我们可以使用status方法来获取到当前协程的状态,如下:
一般运行状态的话,必须是一个协程调用另一个协程才能引发这种状态。
四、协程挂起当我们的协程被挂起的时候,相当是每隔一段时间做了一件事,这也就是所谓的计时器的由来,如下:
我们执行了两次就打印了两次结果,不过由于我们给定的变量的值为10,因此到10的时候协程被销毁。而且协程一般返回的是布尔值,如下:
五、判断协程的重要性我们在执行程序时,会有很多协程一起执行,这个时候就需要给协程一个顺序,lua提供了一个方法用来判断当前协程是否可以被中止,如下:
print(coroutine.isyieldable())
这个方法在lua最新版本中才提供支持。
六、消费者生产者上面就是我们所说的关于协程的所有知识了,不过光学这个还不行,我们可以使用协程来模仿下线程中消费者和生产者,如下:
我们现在生产者中创建一个协程用来发送物品到消费者,消费者接收到后直接吃掉这个物品然后生产者再次发送物品,就这样循环着。
六、总结本章小编和大家主要讲到了关于协程的概念,难度不高,不过要想融会贯通也不是很容易,因为协程往往会伴随着更多的操作。
标签:第十二天,创建,如下,---,lua,线程,协程,我们 来源: https://blog.51cto.com/u_9736252/2804213