欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lua编程示例(八):生产者-消费者问题

程序员文章站 2022-06-17 09:30:24
这个问题是比较经典的啦,基本所有语言的多线程都会涉及到,但是没想到lua的这个这么复杂 抓狂   看了好长时间才算看明白,先上个逻辑图:  &...

这个问题是比较经典的啦,基本所有语言的多线程都会涉及到,但是没想到lua的这个这么复杂 抓狂
  看了好长时间才算看明白,先上个逻辑图:

Lua编程示例(八):生产者-消费者问题

   开始时调用消费者,当消费者需要值时,再调用生产者生产值,生产者生产值后停止,直到消费者再次请求。设计为消费者驱动的设计。
   图画的不太好,可以先将filter遮住,它是过滤器对两个程序之间传递的信息进行处理。去掉filter逻辑就更清晰些了,就是两个“线程”(其实是两个协同程序)互相调用。resume回到yield处开始,支持嵌套,返回到栈顶的yield位置。yield是非阻塞的“线程同步”。这到有点像linux里的管道通信。


 


运行结果: