協程
協程(coroutine)喺控制流程上係一種子程式嘅廣義化。當個程式要求行一個子程式嗰時,佢會由個子程式開頭嗰度行,行到尾嗰時就離開個子程式;一個子程式衹會行一次,而喺每次行個子程式之間嗰段時間,部電腦唔會儲住「個子程式喺乜狀態」嘅資訊;相比之下,一個協程(協程 A)可以要求另一個協程(協程 B),但離開協程 A 去行協程 B 之後,個程式會記住佢喺邊個點離開協程 A 同埋協程 A 當時嘅狀態,行完協程 B 之後可以返去原先喺協程 A 個位繼續行。一段用協程嘅碼望落大致會係噉嘅[1]:
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
攷
編輯- ↑ Knuth, Donald Ervin (1997). Fundamental Algorithms. The Art of Computer Programming. 1 (3rd ed.). Addison-Wesley. Section 1.4.2: Coroutines, pp. 193–200.