1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
在php
等語(yǔ)言里的yield
,不是協(xié)程
語(yǔ)法,而是迭代器
語(yǔ)法。
而包括php
在內(nèi)的大多數(shù)語(yǔ)言實(shí)現(xiàn)迭代器
的方式,是通過(guò)一個(gè)可中斷的函數(shù)完成的。
而協(xié)程
的一個(gè)特點(diǎn)就是執(zhí)行中斷,切換上下文。
所以就有了通過(guò)迭代器
函數(shù)去實(shí)現(xiàn)
協(xié)程的方案。這種方案充分利用了迭代器
可中斷的特點(diǎn)來(lái)模擬協(xié)程
中斷,而利用閉包函數(shù)的上下文獨(dú)立性,實(shí)現(xiàn)協(xié)程
的上下文切換。
總結(jié)起來(lái),什么是協(xié)程,協(xié)程是通過(guò)切換運(yùn)行方法和上下文,來(lái)在同一個(gè)空間中完成不同的處理任務(wù)(注意,不是另外開(kāi)線程)。
那么協(xié)程怎么實(shí)現(xiàn),goroutine
就是協(xié)程的一種實(shí)現(xiàn)方式。
而通過(guò)迭代器
實(shí)現(xiàn)協(xié)程,就又是另外一種方式。
兩者的區(qū)別在于,goroutine
是已經(jīng)存在的實(shí)現(xiàn)。相當(dāng)于已經(jīng)成品的車,你理解起來(lái)會(huì)相當(dāng)容易。
而迭代器
只是提供者實(shí)現(xiàn)協(xié)程
的方法,具體要實(shí)現(xiàn)協(xié)程,還需要自己去寫代碼完成。這就好像是汽車的零件,你需要自己組裝,所以還需要深入學(xué)習(xí)你才能理解它的原理
- 1 回答
- 0 關(guān)注
- 580 瀏覽
添加回答
舉報(bào)