全部博文(389)
分类: Python/Ruby
2012-03-21 16:46:39
一、coroutine机制
lua下的coroutine提供的是一种“半对称协同进程”机制,提供了两个函数来控制两个函数的执行,一个挂起,一个恢复执行。
1)resume 恢复执行函数
2)yield 挂起函数
二、数据交换
通过使用resume和yield函数的参数来实现数据交换,感觉《lua程序设计》里这部分说的比较模糊,所以这里补充一下。
第一次调用resum时,resume的参数就是协同进程函数的参数,如果函数里存在yield,则yield返回的值也是resume的参数,然后resume返回的值是yield的参数,这样就达到了数值交换的目的。
再次调用resume时,resume的传入的参数由yield返回,但是resume返回的值同第一调用resume时返回的值相同