協程和異步有什么區別?
協程是與例程相對而言的。熟悉C/C++語言的人都知道,一個例程也就是一個函數。當我們調用一個函數時,執行流程進入函數;當函數執行完成后,執行流程返回給上層函數或例程。期間,每個函數執行共享一個線程棧;函數返回后棧頂的內容自動回收。這就是例程的特點,也是現代操作系統都支持這種例程方式。
異步IO程序中,有很大一塊代碼是處理異步回調的,也就是數據讀取或寫入由系統執行,當任務完成后,系統會執行用戶的回調。如果只是很少使用這種回調,那么程序并不會因為異步而復雜多少,但要是程序中異步回調大量存在,那么此時我們會發現,原本簡單的程序可能因為回調而變得支離破碎,原本一個簡單的循環,