What is channel buffer size?

前端 未结 3 1744
[愿得一人]
[愿得一人] 2020-12-02 08:17

I\'m trying to create an asynchronous channel and I\'ve been looking at http://golang.org/ref/spec#Making_slices_maps_and_channels.

c := make(chan int, 10)          


        
3条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-02 09:03

    The buffer size is the number of elements that can be sent to the channel without the send blocking. By default, a channel has a buffer size of 0 (you get this with make(chan int)). This means that every single send will block until another goroutine receives from the channel. A channel of buffer size 1 can hold 1 element until sending blocks, so you'd get

    c := make(chan int, 1)
    c <- 1 // doesn't block
    c <- 2 // blocks until another goroutine receives from the channel
    

提交回复
热议问题