golang-design / under-the-hood

📚 Go: Under The Hood | Go 语言原本 | https://golang.design/under-the-hood
https://golang.design/under-the-hood
MIT License
4.3k stars 505 forks source link

无缓冲通道,为什么还有`len(ch) == C`呢? #59

Closed l-qing closed 3 years ago

l-qing commented 3 years ago

问题描述

# 5.9 内存一致模型一节结尾部分,有这样一句:

7. channel: 如果 ch 是一个 unbuffered channel 则,`len(ch) == C` => `从 channel 中收到第 k 个值` < `k+C 个值得发送完成`

我的疑问是: 既然是无缓冲通道,为什么还有len(ch) == C呢?

原文地址

https://github.com/golang-design/under-the-hood/blame/6726d9aec5d47977125803c584f466ee48fa3b0c/book/zh-cn/part1basic/ch05sync/mem.md#L172

changkun commented 3 years ago

此处应该是一个笔误:

- channel: 如果 ch 是一个 unbuffered channel 则,`len(ch) == C` => `从 channel 中收到第 k 个值` < `k+C 个值得发送完成`
+ channel: 如果 ch 是一个容量 `len(ch) == C` 的 buffered channel,则 `从 channel 中收到第 k 个值` < `k+C 个值得发送完成`

PR welcome