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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于异步IO与同步IO的写操作区别

發布時間:2025/3/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于异步IO与同步IO的写操作区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?最近這兩天都在看IO相關的知識點.一開始太凌亂,太雜,不過終于整理清楚了.覺得雜亂是因為一開始以為異步IO等于非阻塞IO,這完全是兩個概念,

? ? ? ?LINUX下的異步IO有兩類,一類為glibc AIO,這類AIO是通過線程回調模擬,沒細究;另一類是native AIO,是LINUX內核支持的,但只支持直接IO技術,關于直接IO技術.這里哆嗦兩句,在一般情況下LINUX進行write系統調用時,通常是采用的延遲寫入機制.在內核空間,有一個IO緩沖區,主要用來存儲用戶的寫入數據,write系統調用成功返回時,只能夠確定是將數據寫入了這個頁中(并將該頁標記為臟頁,內核會定期或不定期將臟頁的數據刷新進具體的磁盤上).手動同步到具體硬件上可以用fsync或者sync系統調用,這里就不多說了.針對于寫操作來說.同步IO與異步IO的具體流程為:

?


同步: ?write-->內核緩沖頁-->內核定時或不定期刷新至磁盤中

異步 ? write-->提交寫請求給內核-->由內核通過自己的調度算法將寫操作具象出來

?


從這里可以看出來,對于寫操作,不管是同步,還是異步,write調用都可以立即返回,不存在IO等待,但是通過這篇文章http://blog.csdn.net/youbingchen/article/details/51769042中的小結

注意:Linux內核級別的文件異步I/O是不支持緩存操作的,也就是說,即使需要操作的文件塊在Linux文件緩存存在,也不會通過讀取、更改緩存中的文件塊來代替實際對磁盤的操作。目前,Nginx僅支持在讀取文件時使用異步I/O,因為正常寫入文件時往往是寫入內存中就 立刻返回,而使用異步I/O寫入時速度會明顯下降

異步寫反而會降低效率.原因應該是直接IO所導致的,比如同時寫入操作10萬次,如果用的同步IO,寫入緩存頁的方式,實際的真正IO操作肯定是少于10萬,而異步IO就會真正執行10萬.

? ? ? ? 異步IO應該主要是針對字符設備,如鍵盤等不知道什么時候會有數據來的情況,效果更好.不過在實際開發過程中.用到異步IO的地方真是太少太少了.

轉載于:https://www.cnblogs.com/c-slmax/p/8444205.html

總結

以上是生活随笔為你收集整理的关于异步IO与同步IO的写操作区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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