Coroutine 一般翻譯作「協程」,對一般 programmer 來說可能有些陌生,但其實這個想法早在 1963 年就被提出來了。近年來因為 multi-threading 的普及,主流語言鮮少提供 coroutine 的功能,但即使 coroutine 與 thread 的概念相似,卻有許多截然不同的特性,不少場合使用 coroutine 既能優雅地解決問題,又能避免 multi-threading 的 race condition。本系列文章將會介紹 coroutine 的基本概念及應用場合,讓原本複雜的流程變得簡潔易懂。
Lua 是支援 coroutine 的語言之一,同時也具備簡單易學的特性,以下將會使用 Lua 程式碼作為 coroutine 的示範。對 Lua 不熟悉的讀者可以參考 Lua Tutorial Dictionary 上的教學,實際學起來是很快的。