協程

協程喺控制流程上係一種子程式嘅廣義化。當個程式要求行一個子程式嗰時，佢會由個子程式開頭嗰度行，行到尾嗰時就離開個子程式；一個子程式衹會行一次，而喺每次行個子程式之間嗰段時間，部電腦唔會儲住「個子程式喺乜狀態」嘅資訊；相比之下，一個協程可以要求另一個協程，但離開協程 A 去行協程 B 之後，個程式會記住佢喺邊個點離開協程 A 同埋協程 A 當時嘅狀態，行完協程 B 之後可以返去原先喺協程 A 個位繼續行。一段用協程嘅碼望落大致會係噉嘅：

var q := new queue

coroutine produce
     loop
         while q is not full
             create some new items
             add the items to q
         yield to consume

coroutine consume
     loop
         while q is not empty
             remove some items from q
             use the items
         yield to produce

攷 

編程