<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 同步與異步IO、阻塞與非阻塞IO

          同步與異步IO、阻塞與非阻塞IO

          作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
          PS. 我理解這里的意思是,read請(qǐng)求是非阻塞的,但是這里沒(méi)有異步通知機(jī)制,而需要應(yīng)用程序主動(dòng)查詢,所以是同步的。(多次試探)
          異步阻塞 I/O
          另外一個(gè)阻塞解決方案是帶有阻塞通知的非阻塞 I/O。在這種模型中,配置的是非阻塞 I/O,然后使用阻塞 select 系統(tǒng)調(diào)用來(lái)確定一個(gè) I/O 描述符何時(shí)有操作。使 select 調(diào)用非常有趣的是它可以用來(lái)為多個(gè)描述符提供通知,而不僅僅為一個(gè)描述符提供通知。對(duì)于每個(gè)提示符來(lái)說(shuō),我們可以請(qǐng)求這個(gè)描述符可以寫(xiě)數(shù)據(jù)、有讀數(shù)據(jù)可用以及是否發(fā)生錯(cuò)誤的通知。
          圖 4. 異步阻塞 I/O 模型的典型流程 (select)
          select 調(diào)用的主要問(wèn)題是它的效率不是非常高。盡管這是異步通知使用的一種方便模型,但是對(duì)于高性能的 I/O 操作來(lái)說(shuō)不建議使用。
          PS. 我理解這里的意思是,read請(qǐng)求實(shí)際上是非阻塞的,但是在異步通知方式上,采用了阻塞的slect系統(tǒng)調(diào)用,導(dǎo)致應(yīng)用程序被阻塞,所以雖然異步,但任然阻 塞。(等待通知,自己完成)
          異步非阻塞 I/O(AIO)
          最后,異步非阻塞 I/O 模型是一種處理與 I/O 重疊進(jìn)行的模型。讀請(qǐng)求會(huì)立即返回,說(shuō)明 read 請(qǐng)求已經(jīng)成功發(fā)起了。在后臺(tái)完成讀操作時(shí),應(yīng)用程序然后會(huì)執(zhí)行其他處理操作。當(dāng) read 的響應(yīng)到達(dá)時(shí),就會(huì)產(chǎn)生一個(gè)信號(hào)或執(zhí) 行一個(gè)基于線程的回調(diào)函數(shù)來(lái)完成這次 I/O 處理過(guò)程。
          圖 5. 異步非阻塞 I/O 模型的典型流程

          在一個(gè)進(jìn)程中為了執(zhí)行多個(gè) I/O 請(qǐng)求而對(duì)計(jì)算操作和 I/O 處理進(jìn)行重疊處理的能力利用了處理速度與 I/O 速度之間的差異。當(dāng)一個(gè)或多個(gè) I/O 請(qǐng)求掛起時(shí),CPU 可以執(zhí)行其他任務(wù);或者更為常見(jiàn)的是,在發(fā)起其他 I/O 的同時(shí)對(duì)已經(jīng)完成的 I/O 進(jìn)行操作。
          PS. 我理解這里的意思是,read請(qǐng)求實(shí)際上是非阻塞的,但是在異步通知方式上,采用了回調(diào)函數(shù),無(wú)需應(yīng)用程序再去處理。(委托完成)
          異步I/O的動(dòng)機(jī)
          從前面 I/O 模型的分類(lèi)中,我們可以看出 AIO 的動(dòng)機(jī)。阻塞模型要求在 I/O 操作開(kāi)始時(shí)阻塞應(yīng)用程序,這意味著不可能同時(shí)重疊進(jìn)行處理和 I/O 操作。同步非阻塞模型允許處理和 I/O 操作重疊進(jìn)行,但是這需要應(yīng)用程序根據(jù)重現(xiàn)的規(guī)則來(lái)檢查 I/O 操作的狀態(tài)。這樣就剩下異步非阻塞 I/O 了,它允許處理和 I/O 操作重疊進(jìn)行,包括 I/O 操作完成的通知。


          這里我要特別強(qiáng)調(diào)一下異步IO和非阻塞IO的區(qū)別,異步IO就是把IO提交給系統(tǒng),讓系統(tǒng)替你做,做完了再用某種方式通知你;非阻塞IO就是你要通過(guò)某種方式不定時(shí)地向系統(tǒng)詢問(wèn)你是否可以開(kāi)始做某個(gè)IO,當(dāng)可以開(kāi)始后,還是要自己來(lái)完成IO
          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 同步異步IO阻塞非阻塞I

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();