我無法找到IO流緩衝的基本概念,這是什麼意思。 任何教程和鏈接都會有所幫助。什麼是IO流緩衝?
回答
緩衝是處理輸入和輸出的軟件的基本部分。由於硬件和軟件以不同的速度運行,因此緩衝區保存位於軟件接口和硬件接口之間的數據。
生成數據的組件可以將其放入緩衝區,然後通過將收集的數據發送到下一個組件來「刷新」緩衝區。同樣,其他組件可能會「等待緩衝區」,直到完整的一塊數據或有效處理的數據足以用於輸入。
在C++中,std::basic_filebuf
在文件系統文件上實現緩衝區。它存儲最多固定的字節數,所以操作系統總是以最小的事務大小工作,而程序可以根據需要訪問單個字符。
請參閱Wikipedia。
謝謝! ! 但我想知道它是如何在IO Stream中完成的。 – khirod
@khirod這是非常通用的東西......但是,IOStream有一個非常複雜的系統。有關更深入的信息,請參閱http://en.cppreference.com/w/cpp/io/basic_filebuf。 – Potatoswatter
謝謝,明白了:) – khirod
緩衝使用內存(用戶內存),而不是直接向OS(即磁盤)發送數據。保存在上下文切換。
C++語言中的任何代碼使其更加清晰.. – khirod
http://linux.die.net/man/3/fread和http://linux.die.net/man/3/fwrite等 –
這是概念。想象一下你有一個需要將數據寫入硬盤的應用程序。假設它想每隔半秒寫一些東西(例如更新日誌文件)。這個好嗎?不,這是原因。
軟件可以非常快,但硬盤的運行速度有限,而且比內存和應用程序慢得多。要寫一些東西,硬盤需要將其磁頭重新定位到特定的扇區(這可能涉及放慢光盤旋轉速度),寫入數據,然後重新定位到原來的位置。所以你的應用程序可能運行得非常慢(當然,這是一個理論上的例子)。
緩衝有助於解決這個問題。而不是每次都寫入光盤,數據正在內存中的某個地方被緩存。一旦收集到足夠數量的數據,緩衝區就會被刷新:數據將被寫入磁盤。這種方法有助於最大限度地減少硬盤驅動器的運作並提高整體速度
- 1. 什麼是文件IO流緩衝區?
- 2. C++緩衝流IO
- 3. fork()和緩衝IO流
- 4. 緩衝IO與非緩衝IO
- 5. 什麼是「別名」流緩衝區?
- 6. 在java中緩衝緩衝流的結果是什麼?
- 7. 什麼是緩衝區?什麼是緩衝讀取和寫入?
- 8. IO緩衝關閉
- 9. 什麼是輸出緩衝?
- 10. 什麼是緩衝的
- 11. 什麼是緩衝區?
- 12. 什麼是'沖洗流'?
- 13. 無緩衝流和緩衝流
- 14. Java IO緩衝區導航
- 15. perl中的無緩衝IO
- 16. Haskell默認io緩衝
- 17. Python文件io緩衝
- 18. Ruby中的緩衝IO
- 19. 文件IO和緩衝區
- 20. 爲什麼默認緩衝區大小在Java IO中爲8k?
- 21. 「輸出popen()流默認完全被緩衝」是什麼意思?
- 22. 緩衝/流式在線視頻背後的算法是什麼?
- 23. 是TarArchiveInputStream緩衝還是無緩衝輸入流?
- 24. 什麼是Perf緩衝區大小?
- 25. 這是什麼緩衝區功能?
- 26. 什麼是緩衝區寫入?
- 27. G1 GC:什麼是SATB緩衝區?
- 28. 什麼是標準輸入緩衝區?
- 29. Qt - 什麼是樣本緩衝區?
- 30. 什麼是LoggingSession緩衝區大小?
定義的C++標準的第27.6.2節;一些[這些書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)的教程或參考。 [This one](http://www.amazon.com/dp/0201183951/?tag=stackoverfl08-20)聽起來很有希望,儘管我沒有自己讀過。 –