国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

說(shuō)說(shuō)IO(二)- IO模型

發(fā)布時(shí)間:2021-08-02 22:45 來(lái)源:https://blog.51cto.com/forange 閱讀:191 作者:易改乾坤 欄目: Mysql 歡迎投稿:712375056

使用資源階段:真正進(jìn)行數據接收和發(fā)生。


舉例說(shuō)就是排隊和服務(wù)。

IO請求的兩個(gè)階段:

- 異步IO:由于異步IO請求只是寫(xiě)入了緩存,從緩存到硬盤(pán)是否成功不可知,因此異步IO相當于把一個(gè)IO拆成了兩部分,一是發(fā)起請求,二是獲取處理結果。因此,對應用來(lái)說(shuō)增加了復雜性。但是異步IO的性能是所有很好的,而且異步的思想貫穿了IT系統放放面面。

2.多路復用確實(shí)是阻塞的,但是這個(gè)阻塞是在select或者poll函數上的或者是在內部實(shí)現上(select雖然阻塞,但是能支持多路IO);對Java來(lái)說(shuō),由于封裝了一層,Java的接口屏蔽了這個(gè)阻塞,對外呈現出非阻塞的使用方式。感覺(jué)這么說(shuō)可能更恰當一些——JavaNIO底層實(shí)現使用了IO多路復用,而在本身NIO的接口使用方式上,是一種非阻塞IO的方式(輪詢(xún)檢查的方式)。

- 同步IO:同步IO保證一個(gè)IO操作結束之后才會(huì )返回,因此同步IO效率會(huì )低一些,但是對應用來(lái)說(shuō),編程方式會(huì )簡(jiǎn)單。Java的BIO和NIO都是使用這種方式進(jìn)行數據處理。

在使用資源階段,IO分為同步IO和異步IO。

從性能上看,異步IO的性能無(wú)疑是最好的。

這部分的東西在網(wǎng)絡(luò )編程經(jīng)常能看到,不過(guò)在所有IO處理中都是類(lèi)似的。

- 阻塞IO:使用簡(jiǎn)單,但隨之而來(lái)的問(wèn)題就是會(huì )形成阻塞,需要獨立線(xiàn)程配合,而這些線(xiàn)程在大多數時(shí)候都是沒(méi)有進(jìn)行運算的。Java的BIO使用這種方式,問(wèn)題帶來(lái)的問(wèn)題很明顯,一個(gè)Socket需要一個(gè)獨立的線(xiàn)程,因此,會(huì )造成線(xiàn)程膨脹。

按照Unix的5個(gè)IO模型劃分

- 異步IO

各種IO的特點(diǎn)

同步IO:應用阻塞在發(fā)送或接收數據的狀態(tài),直到數據成功傳輸或返回失敗。

- 信號驅動(dòng)的IO

阻塞IO:資源不可用時(shí),IO請求一直阻塞,直到反饋結果(有數據或超時(shí))。

異步IO:應用發(fā)送或接收數據后立刻返回,數據寫(xiě)入OS緩存,由OS完成數據發(fā)送或接收,并返回成功或失敗的信息給應用。

- 阻塞IO

在等待數據階段,IO分為阻塞IO和非阻塞IO。

- 非阻塞IO

非阻塞IO:資源不可用時(shí),IO請求離開(kāi)返回,返回數據標識資源不可用

- 非阻塞IO:采用輪詢(xún)方式,不會(huì )形成線(xiàn)程的阻塞。Java的NIO使用這種方式,對比BIO的優(yōu)勢很明顯,可以使用一個(gè)線(xiàn)程進(jìn)行所有Socket的監聽(tīng)(select)。大大減少了線(xiàn)程數。

等待資源階段:IO請求一般需要請求特殊的資源(如磁盤(pán)、RAM、文件),當資源被上一個(gè)使用者使用沒(méi)有被釋放時(shí),IO請求就會(huì )被阻塞,直到能夠使用這個(gè)資源。

- IO復用

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

无遮挡激情视频国产在线观看| 女女女女BBBBBB毛片在线| 成在线人视频免费视频| 夜夜揉揉日日人人青青| 亚洲爆乳精品无码AAA片| 女人爽到喷水的视频大全|