Go 通道中的缓冲行为:make(chan bool) 与 make(chan bool, 1)
使用 make 创建的无缓冲通道(chan bool),与使用 make(chan bool, 1) 定义的缓冲通道不同,其保存值的能力不同。
无缓冲通道:make(chan bool)
示例:
<code class="go">chanFoo := make(chan bool) // Writes will block because no receiver is waiting chanFoo <- true // Corresponding read will now succeed even though no value was sent <-chanFoo</code>
缓冲通道:make(chan bool, 1)
示例:
<code class="go">chanFoo := make(chan bool, 1) // Write will succeed immediately chanFoo <- true // Subsequent read will also succeed <-chanFoo</code>
行为差异
无缓冲通道的实用性
无缓冲时通道可能看起来不太直观或不太有用,它们有特定的应用程序:
以上是Go Channels 中 `make(chan bool)` 和 `make(chan bool, 1)` 之间的缓冲行为有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!