Producers और Consumers
दो coroutines एक छोटे pipeline की तरह आगे-पीछे data pass कर सकते हैं।
In this page:
Producers और Consumers
producer-consumer pattern में एक हिस्सा data generate करता है और दूसरा इसे process करता है। Coroutines के साथ producer हर item yield करता है और एक consumer loop इसे resume करता है और जो वापस आए उसे handle करता है। एक filter बीच में एक दूसरे coroutine की तरह बैठ सकता है, जो बिना किसी threads के एक pipeline बनाता है।
Note:
एक coroutine जो normally return होता है resume के true और इसकी return values return करने के साथ खत्म होता है।
उदाहरण: Producers and consumers
local function producer()
return coroutine.create(function()
for _, w in ipairs({"alpha", "beta", "gamma"}) do
coroutine.yield(w)
end
end)
end
local function consumer(p)
local out = {}
while true do
local ok, item = coroutine.resume(p)
if not item then break end
out[#out + 1] = item:upper()
end
return out
end
print(table.concat(consumer(producer()), ", "))
-- Output:
-- ALPHA, BETA, GAMMA
Login to try C/C++/Java/PHP code in the editor
आम गलतियां
- producer के dead होने पर रुकना भूल जाना
- ज़रूरी values वापस pass किए बिना resume करना
- यह confuse करना कि कौन-सा side producer है और कौन-सा consumer
चैप्टर सारांश
- Producer items yield करता है
- Consumer इन्हें पाने के लिए resume करता है
- Filters chain हो सकते हैं
- रुकने के लिए status या nil check करें
🔒
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: