IO共有四種模型:同步阻塞、同步非阻塞、異步阻塞、異步非阻塞 同步阻塞:系統(tǒng)內(nèi)核做好讀寫(xiě)數(shù)據(jù)的準(zhǔn)備之前,用戶線程一直等待。
同步非阻塞:用戶線程使用一個(gè)循環(huán)不斷詢問(wèn)內(nèi)核是否準(zhǔn)備就緒,在準(zhǔn)備就緒以前會(huì)一直進(jìn)行該循環(huán)。
異步阻塞:用戶線程啟動(dòng)一個(gè)新的線程去同步阻塞,自己則做下一件事,新的線程不斷詢問(wèn)系統(tǒng)內(nèi)核并阻塞。
異步非阻塞:當(dāng)用戶線程收到通知時(shí),數(shù)據(jù)已經(jīng)被內(nèi)核讀取完畢,并放在了用戶線程指定的緩沖區(qū)內(nèi),內(nèi)核在IO完成后通知用戶線程直接使用即可