回答

收藏

什么是通道缓冲区大小?

技术问答 技术问答 580 人阅读 | 0 人回复 | 2023-09-12

    c := make(chan int,10)      channel with a buffer size of 102 W" S) y6 M* v
10 缓冲区的大小是什么意思?缓冲区的具体大小代表/限制是什么?: |$ H- _+ c/ c: Y  n& U
                                                               
( X. e" H, t" F5 s    解决方案:                                                               
8 V8 M$ O- g3 m, E+ x9 [" {                                                                缓冲区的大小是可以在没有阻塞的情况下发送到通道的元素数。默认情况下,通道缓冲区的大小为 0(你可以通过 获得make(chan int))。这意味着每次发送都会被阻塞,直到另一个 goroutine 从通道接收。在发送块之前,缓冲区大小为 1 的通道可容纳 1个元素,因此您将获得
  C) k8 d% S, E$ p- u- r0 {
    c := make(chan int,1)c <- 1 // doesn't blockc <- 2 // blocks until another goroutine receives from the channel: a9 L9 x' \% Y7 @3 w0 f$ e9 x$ h
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则