同步與異步是IO操做與CPU指令協做方式的不一樣
同步sync
阻塞blocking:同一條線程獨自完成IO操做和CPU指令操做,全程阻塞
非阻塞non-blocking:系統內核封裝了檢查IO的執行線程,等資源加載完後通知應用程序線程進行操做處理,雖然不用等待資源下載,但本質上仍是阻塞,只是阻塞的位置變了。
ps:不管是阻塞仍是非阻塞,io讀寫和cpu執行指令是耦合的,系統內核拷貝數據到程序進程的過程仍是阻塞的,但這樣作能夠保證執行順序!
異步async
解耦了IO操做和CPU執行指令,IO操做和CPU執行指令都暴露出去,讓程序員控制, cpu不去參與IO的事情,IO處理完回調給應用程序即可,數據交互無需拷貝一份到程序進程,經過內存映射的方式避免了CPU的參與,但這樣作執行順序沒法控制!