簡體   English   中英

我對緩沖區的理解正確嗎?

[英]Is my understanding of a buffer correct?

我最近一直在學習緩沖區,我想檢查一下我是否正確理解它們。 我必須讀取二進制格式的文件,這導致字節序列。 為了在程序中使用這些字節,我必須將它們存儲在向量中,然后才能遍歷向量中的每個元素。

因此,緩沖區不是像矢量這樣的實際數據類型,而是一種以更好/更易訪問的格式臨時存儲數據以便可以使用的緩沖區。 這個定義正確嗎? 我認為這沒有什么區別,但是我使用的語言是C ++。

我認為您適合這種特殊情況,您正在使用臨時存儲將字節讀取到內存中,然后將其重塑為程序所需的實際數據格式。

但是:在不同的上下文中,術語“緩沖區”用於許多事物。

例如,緩沖區可以是用於從文件讀取到內存中的內存,這樣,當源請求單個字符(或少量字節)時,運行時庫就不必一直進入操作系統。內核請求一個或少量的字節,但將其開銷分攤為一千字節或幾千字節的數據。 這通常隱藏在C或C ++運行時中。

在C ++中, std::stream的內部實現使用std::streambuf來處理文件I / O的低級緩沖機制。

在其他情況下,這是系統忙於執行其他操作時存儲按鍵的位置,直到應用程序有時間從鍵盤輸入中讀取內容。

同樣,在屏幕上顯示實際視頻內容之前,還有一些緩沖區可以從互聯網讀取視頻流。 因為如果視頻播放器一次僅請求幾個字節(如使用的那樣),那么請求的開銷將使回放非常不穩定。

另一個示例是使用OpenCL(或例如Cuda)處理GPU上的某些數據並想要一些內存來存儲數據的應用程序,然后調用clCreateBuffer(..., size, ...)將返回一個用於存儲size字節的內存對象。

在計算機中還有許多其他地方使用術語“緩沖區”。 (以及在計算機外部的區域,例如化學方面的化合物(一種能夠抵抗或幫助限制pH值的化合物)和火車上的區域(在支架末端的“碰撞停止”))。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM