Coroutine Concepts
Producer State
Coroutines are often used to produce one value at a time.
Producer State
producer_state.lua
local limit =
local produced = 0
local lastValue = 0
local state = "ready"
while produced < limit do
produced = produced + 1
lastValue = produced
state = "yielded"
end
print("limit=" .. limit)
print("produced=" .. produced)
print("lastValue=" .. lastValue)
print("state=" .. state)
local limit =
local produced = 0
local lastValue = 0
local state = "ready"
while produced < limit do
produced = produced + 1
lastValue = produced
state = "yielded"
end
print("limit=" .. limit)
print("produced=" .. produced)
print("lastValue=" .. lastValue)
print("state=" .. state)
local limit =
local produced = 0
local lastValue = 0
local state = "ready"
while produced < limit do
produced = produced + 1
lastValue = produced
state = "yielded"
end
print("limit=" .. limit)
print("produced=" .. produced)
print("lastValue=" .. lastValue)
print("state=" .. state)
producer
A producer can keep its position between steps. This example models that position with scalar counters.