在同步IO中,線程啟動一個IO操作然后就立即進(jìn)入等待狀態(tài),直到IO操作完成后才醒來繼續(xù)執(zhí)行。而異步IO方式中,線程發(fā)送一個IO請求到內(nèi)核,然后繼續(xù)處理其他的事情,內(nèi)核完成IO請求后,將會通知線程IO操作完成了。

如果IO請求需要大量時(shí)間執(zhí)行的話,異步IO方式可以顯著提高效率,因?yàn)樵诰€程等待的這段時(shí)間內(nèi),CPU將會調(diào)度其他線程進(jìn)行執(zhí)行,如果沒有其他線程需要執(zhí)行的話,這段時(shí)間將會浪費(fèi)掉。

協(xié)程

協(xié)程(Coroutine),又稱微線程。

我們平常使用的函數(shù)又稱子程序,是層級調(diào)用的,即A函數(shù)調(diào)用B,B函數(shù)又調(diào)用C,那么需要等C執(zhí)行完畢返回,然后B程序執(zhí)行完畢返回,最后A執(zhí)行完畢。

協(xié)程看上去也是子程序,但是執(zhí)行順序和子程序不同:協(xié)程執(zhí)行過程可以中斷,同樣是A函數(shù)調(diào)用B,但B可以執(zhí)行一部分繼續(xù)去執(zhí)行A,然后繼續(xù)執(zhí)行B未執(zhí)行完的部分。

協(xié)程看起來很像多線程。但協(xié)程最大的優(yōu)勢是極高的執(zhí)行效率。因?yàn)榫€程需要互相切換,切

網(wǎng)友評論