Lua生产者与消费者问题

原创 2018年04月16日 22:26:58

(1)Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。
(2)在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被主动要求挂起的时候才会被挂起。其它协同程序才有机会执行。
(3)协调程序创建后,默认是挂起的,调用resume()方法后才算启动

--生产者消费者问题
local newProductor

--生产
function productor()
    local i = 0
    while true do
        i = i + 1
        send(i)             --将生产的物品发给消费者
    end
end

--消费
function consumer()
    while true do
        local i = recieve()     --从生产者哪里拿到物品
        print(i)
    end
end

--从生产者哪里得到物品的方法
function recieve()
    local status,value = coroutine.resume(newProductor)
    return value
end

--生产者把物品发送给消费者的方法
function send(x)
    coroutine.yield(x)      --生产者把值发送出去之后,就把自己的这个协同程序给挂起
end

--启动程序
newProductor = coroutine.create(productor)      --创建协同程序newProductor,(创建时执行productor()方法)
consumer()
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36748278/article/details/79967713

Lua编程(八)协同程序的高级用法——生产者-消费者问题

这个问题是比较经典的啦,基本所有语言的多线程都会涉及到,但是没想到Lua的这个这么复杂     看了好长时间才算看明白,先上个逻辑图:        开始时调用消费者,当消费者需要值时,再调用...
  • fansongy
  • fansongy
  • 2011-11-29 14:55:38
  • 3539

lua和python利用协程实现消费-生产者问题

lua版本:--生产者,消费者模式-- --通过yield,resume配对实现,类似java的wait和notifyfunction send(x) coroutine.yield(x) e...
  • xiangxianghehe
  • xiangxianghehe
  • 2016-12-03 23:26:43
  • 621

操作系统生产者和消费者问题

  • 2010年04月29日 12:33
  • 2KB
  • 下载

多生产者多消费者问题(Lock接口、Condition接口)

在多生产者多消费者问题中,我们通过while判断和notifyAll()全唤醒方法解决了问题,但是notifyAll()同时也带来了弊端,它要唤醒所有的被等待的线程,意味着既唤醒了对方,也唤醒了本方,...
  • syf1970
  • syf1970
  • 2016-05-07 17:19:37
  • 529

操作系统中生产者/消费者问题(一)

生产者/消费者是个典型的进程同步问题,只有生产者生产出来东西了,消费者才能消费 也就是说,生产者生成出来一个东西,然后通知消费者,(东西好了,快来拿吧),而消费者则查看缓冲器里面有没有东西,若没有则会...
  • best_fiends_zxh
  • best_fiends_zxh
  • 2016-09-29 19:38:03
  • 1451

操作系统:生产者消费者问题

问题描述: 单个生产者,多个消费者,多个缓冲池,利用多线程通过同步互斥原则完成数据的读取。 解决方案: 生产者与消费者之间涉及同步问题,当缓冲池中有数据时,消费者才能去读取数据;当缓冲池有空余位置时,...
  • qq_27704269
  • qq_27704269
  • 2016-06-06 12:16:13
  • 4294

C例子:生产者与消费者问题

  • 2016年01月17日 22:13
  • 6KB
  • 下载

操作系统---生产者与消费者总结

一、生产者消费者问题所牵涉的概念:  进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源非配和调度的一个独立单位。 进程同步: 进程之间的一种直接的协同工作关系,是一些进程相...
  • woailuo453786790
  • woailuo453786790
  • 2016-05-17 16:08:00
  • 3639

linux下实现生产者消费者问题

生产者(producer)和消费者(consumer)问题是并发处理中最常见的一类问题,是一个多线程同步问题的经典案例。 可以这样描述这个问题,有一个或者多个生产者产生某种类型的数据,并放置在固定大小...
  • u013140542
  • u013140542
  • 2014-08-08 16:21:20
  • 5772

关于生产者-消费者问题

 生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一...
  • orientalcherry
  • orientalcherry
  • 2008-08-22 15:30:00
  • 24223
收藏助手
不良信息举报
您举报文章:Lua生产者与消费者问题
举报原因:
原因补充:

(最多只允许输入30个字)