同步異步與協程線程進程關係

同步異步與協程線程進程關係.
參考:鏈接
主要看那個老張燒開水:
異步執行:老張(調用者),燒開水.是一個調用者-->燒開水.然後燒開水-->(反饋)調用者,調用者-->上水(剩餘,直接先寫)的過程.
有了協程,是不是可以不要異步了?應該就是!搞一堆協程池,都是幹活的.這個事情完了,或者慢得很,就不管了,幹其他事情,當反饋後,直接另外一個協程去幹活.
應該就是這樣.所謂的異步,不過是一件事情分拆成幾個動作. 只不過編程的時候都寫在一起,執行的時候分開執行而已.
再仔細思考:異步,爲什麼異步?就是幹某件事的時間長,如果瞎等,實在是瞎.所以就必須另起個工作者來專門作這件事.然後你就可以做其他事情了.而不是瞎等.
因而,只要耗時長的事情,都可以異步走起.另開一個工作者.主要其實就是協程.所以,我一直看協程,協程.看了過後,感覺沒異步什麼事了呢?原來異步就是靠協程或線程來實現.但線程成本太高,因而就用協程了.
當然,做一件事,可能有幾件事情都非常消耗時間,這時,用同步手法寫異步或者寫協程就是非常爽的了.
參考這篇文章,非常好的文章.
其實就是把原來的一根死線程拆解成一堆活協程.這樣,你這邊慢,我就保存環境,然後幹其他事.等你完成後,把要辦的活幹了.
協程還可以返回值.

Task Add100ByCoroutine(int init, call_back f)
{
    int ret = co_await Add100AWaitable(init);
    ret = co_await Add100AWaitable(ret);
    ret = co_await Add100AWaitable(ret);
    f(ret);//流程化執行.它這裏怪,都是相同函數
}

當然,大量計算耗時的任務,還是得交給線程去完成.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章