Lua中的协同程序详解
Lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中。该函数的代码就是协同程序需要执行的内容。到目前为止,协同程序就是一种函数调用。当coroutine.resume的第一个返回值为false时,就表明协同程序在运行过程中发生了错误;当值为true时,则表明协同程序运行正常。所以将这时的状态称为“正常”状态。Lua的协同程序还具有一项有用的机制,就是可以通过一对resume-yield来交换数据。在第一次调用resume时,并没有对应的yield在等待它,因此所有传递给resume的额外参数都视为协同程序主函数的参数。现在我就使用Lua的协同程序来完成生产者-消费者这一经典问题。生产者生产东西,消费者消费生产者生产的东西。
下载地址
用户评论