Coroutine Concepts
Suspended State
A coroutine can pause work and later continue from the suspended state.
lifecycle state
This example models coroutine lifecycle labels without creating real coroutine objects.
Suspended State
suspended_state.lua
Replay: real traced execution (multi-file project)
local requested = "start"
local state = "suspended"
if requested == "resume" then
state = "running"
elseif requested == "pause" then
state = "suspended"
end
print("requested=" .. requested)
print("state=" .. state)
local requested = "pause"
local state = "suspended"
if requested == "resume" then
state = "running"
elseif requested == "pause" then
state = "suspended"
end
print("requested=" .. requested)
print("state=" .. state)
local requested = "resume"
local state = "suspended"
if requested == "resume" then
state = "running"
elseif requested == "pause" then
state = "suspended"
end
print("requested=" .. requested)
print("state=" .. state)
requested ← start, state ← suspended
1local requested→ start = "start" --@requested="pause", "resume"2local state→ suspended = "suspended"34if requested == "resume" then5 state = "running"6elseif requested == "pause" then7 state = "suspended"8end910print("requested=" .. requestedstart)11print("state=" .. statesuspended)outputrequested=start state=suspended
requested ← pause, state ← suspended
1local requested→ pause = "pause"2local state→ suspended = "suspended"state ← suspended
5 state = "running"6elseif requestedpause == "pause" then7 state→ suspended = "suspended"8endprint("requested=" .. requested)
10print("requested=" .. requestedpause)11print("state=" .. statesuspended)outputrequested=pause state=suspended
requested ← resume, state ← suspended
1local requested→ resume = "resume"2local state→ suspended = "suspended"state ← running
4if requestedresume == "resume" then5 state→ running = "running"6elseif requested == "pause" thenprint("requested=" .. requested)
10print("requested=" .. requestedresume)11print("state=" .. staterunning)outputrequested=resume state=running