日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.3.2 非阻塞IO(non-blocking IO)

發布時間:2024/5/6 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.3.2 非阻塞IO(non-blocking IO) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux下,可以通過設置socket使其變為non-blocking。

當對一個non-blocking socket執行讀操作時,流程是這個樣子:


從圖中可以看出,當用戶進程發出read操作時,如果kernel中的數據還沒有準備好,那么它并不會block用戶進程,而是立刻返回一個error。

用戶進程判斷結果是一個error時,它就知道數據還沒有準備好,于是用戶就可以在本次到下次再發起read詢問的時間間隔內做其他事情,或者直接再次發送read操作。

一旦kernel中的數據準備好了,并且又再次收到了用戶進程的system call,那么它馬上就將數據拷貝到了用戶內存(這一階段仍然是阻塞的),然后返回。

也就是說非阻塞的recvform系統調用調用之后,進程并沒有被阻塞,內核馬上返回給進程,如果數據還沒準備好,此時會返回一個error。

進程在返回之后,可以干點別的事情,然后再發起recvform系統調用。

重復上面的過程,循環往復的進行recvform系統調用。

這個過程通常被稱之為輪詢。

輪詢檢查內核數據,直到數據準備好,再拷貝數據到進程,進行數據處理。

需要注意&#

總結

以上是生活随笔為你收集整理的7.3.2 非阻塞IO(non-blocking IO)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。