diff --git a/eBook/14.3.md b/eBook/14.3.md index e2e2372..632f25d 100644 --- a/eBook/14.3.md +++ b/eBook/14.3.md @@ -1,4 +1,4 @@ -# 协程的同步:关闭通道-测试阻塞的通道 +# 14.3 协程的同步:关闭通道-测试阻塞的通道 通道可以被显示的关闭;尽管它们和文件不同:不必每次都关闭。只有在当需要告诉接收者不会再提供新的值的时候,才需要关闭通道。只有发送者需要关闭通道,接收者永远不会需要。 @@ -99,9 +99,9 @@ for input := range ch { ``` 阻塞和生产者-消费者模式: +在章节14.2.10的通道迭代器中,两个协程经常是一个阻塞另外一个。如果程序工作在多核心的机器上,大部分时间只用到了一个处理器。可以通过使用带缓冲(缓冲空间大于0)的通道来改善。比如,缓冲大小为100,迭代器在阻塞之前,至少可以从容器获得100个元素。如果消费者协程在独立的内核运行,就有可能让协程不会出现阻塞。 - - +由于容器中元素的数量通常是已知的,需要让通道有足够的容量放置所有的元素。这样,迭代器就不会阻塞(尽管消费者协程仍然可能阻塞)。然后,这样有效的加倍了迭代容器所需要的内存使用量,所以通道的容量需要限制一下最大值。记录运行时间和性能测试可以帮助你找到最小的缓存容量带来最好的性能。 ## 链接