14.2 语法本地化,将主语调整为协程,而非程序 (#763)

This commit is contained in:
Xavier Zhao
2020-03-20 20:53:47 +08:00
committed by GitHub
parent 51b311d7d3
commit 677e10c6e9

View File

@@ -508,7 +508,7 @@ func (c *container) Iter () <- chan item {
for x := range container.Iter() { ... } for x := range container.Iter() { ... }
``` ```
其运行在自己启动的协程中,所以上边的迭代用到了一个通道和两个协程(可能运行在不同的线程上)。 这样我们就有了一个典型的生产者-消费者模式。如果程序在协程给通道写完值之前结束则这个协程不会被垃圾回收这是设计使然。这种看起来并不符合预期的行为正是由通道这种线程安全的通信方式所导致的。如此一来一个协程为了写入一个永远无人读取的通道而被挂起就成了一个bug而并非你预想中的那样被悄悄回收掉garbage-collected了。 其运行在自己启动的协程中,所以上边的迭代用到了一个通道和两个协程(可能运行在不同的线程上)。 这样我们就有了一个典型的生产者-消费者模式。如果在程序结束之前,向通道写值的协程未完成工作则这个协程不会被垃圾回收这是设计使然。这种看起来并不符合预期的行为正是由通道这种线程安全的通信方式所导致的。如此一来一个协程为了写入一个永远无人读取的通道而被挂起就成了一个bug而并非你预想中的那样被悄悄回收掉garbage-collected了。
习惯用法:生产者消费者模式 习惯用法:生产者消费者模式