在看過網路上對於 Coroutine 的介紹以後,我想可以簡單的總結如下:
Croutine 是自 1960 年代就已經現身的多工實做技術,原理相當單純,在 Coroutine 的 "yield" 是屬於程式語言層面,透過特定技巧或機制,讓原本循序執行的陳述指令,得以做出交錯執行的結果,可以說是 Windows 3.X 「合作式多工」的基礎概念(十分類似)。
用簡單的一句話來說 Coroutine,就是可以暫時中斷,之後再繼續執行的程序。
下面是從 Tcl 8.6 manual page copy 出來的例子:
coroutine accumulator apply {{} {
set x 0
while 1 {
# yield $x: 丟資料並且把主控權交給呼叫者
incr x [yield $x]
}
}}
for {set i 0} {$i < 10} {incr i} {
puts "$i -> [accumulator $i]"
}
在 manual page 裡還有其它的例子幫助理解,希望我對 Coroutines 的理解是正確的。
沒有留言:
張貼留言