您好,登錄后才能下訂單哦!
這篇文章主要介紹“Go通道緩沖區怎么設置”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Go通道緩沖區怎么設置”文章能幫助大家解決問題。
通道可以設置緩沖區,通過 make 的第二個參數指定緩沖區大小:
ch := make(chan int, 100)
帶緩沖區的通道允許發送端的數據發送和接收端的數據獲取處于異步狀態,就是說發送端發送的數據可以放在緩沖區里面,可以等待接收端去獲取數據,而不是立刻需要接收端去獲取數據。
不過由于緩沖區的大小是有限的,所以還是必須有接收端來接收數據的,否則緩沖區一滿,數據發送端就無法再發送數據了。
注意:如果通道不帶緩沖,發送方會阻塞直到接收方從通道中接收了值。如果通道帶緩沖,發送方則會阻塞直到發送的值被拷貝到緩沖區內;如果緩沖區已滿,則意味著需要等待直到某個接收方獲取到一個值。接收方在有值可以接收之前會一直阻塞。
package main
import "fmt"
func main() {
// 這里我們定義了一個可以存儲整數類型的帶緩沖通道
// 緩沖區大小為2
ch := make(chan int, 2)
// 因為 ch 是帶緩沖的通道,我們可以同時發送兩個數據
// 而不用立刻需要去同步讀取數據
ch <- 1
ch <- 2
// 獲取這兩個數據
fmt.Println(<-ch)
fmt.Println(<-ch)
}
執行輸出結果為:
12
關于“Go通道緩沖區怎么設置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。