Concurrency Coordination Reports
Coroutine Resume Coordination Report
Resume a Lua coroutine a fixed number of times and label the coordination state from the resume count and final coroutine status.
Coroutine Resume Coordination Report
coroutine_resume.lua
local resumes =
local yields = 2
local steps = 0
local co_status = "suspended"
for attempt = 1, resumes do
if attempt <= yields then
steps = steps + 1
else
co_status = "dead"
end
end
local report_status = "primed"
if co_status == "dead" then
report_status = "drained"
elseif steps >= 2 then
report_status = "flowing"
end
print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
local resumes =
local yields = 2
local steps = 0
local co_status = "suspended"
for attempt = 1, resumes do
if attempt <= yields then
steps = steps + 1
else
co_status = "dead"
end
end
local report_status = "primed"
if co_status == "dead" then
report_status = "drained"
elseif steps >= 2 then
report_status = "flowing"
end
print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
local resumes =
local yields = 2
local steps = 0
local co_status = "suspended"
for attempt = 1, resumes do
if attempt <= yields then
steps = steps + 1
else
co_status = "dead"
end
end
local report_status = "primed"
if co_status == "dead" then
report_status = "drained"
elseif steps >= 2 then
report_status = "flowing"
end
print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
coroutine resume
A coroutine yields control on each step and resumes deterministically, so the resumed-step count and the final status stay scalar.