From 65f445350c672d3a4545699022bd30e35b3283cf Mon Sep 17 00:00:00 2001 From: suntong Date: Mon, 28 Mar 2022 22:05:52 -0400 Subject: [PATCH] Update ch8-10.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per https://github.com/golang-china/gopl-zh/issues/58 -- ch8.10 ex8.12 翻译存在歧义 --- ch8/ch8-10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch8/ch8-10.md b/ch8/ch8-10.md index 36cf3a5..4a13bc0 100644 --- a/ch8/ch8-10.md +++ b/ch8/ch8-10.md @@ -114,7 +114,7 @@ You are 127.0.0.1:64216 127.0.0.1:64216 has arrived 当与n个客户端保持聊天session时,这个程序会有2n+2个并发的goroutine,然而这个程序却并不需要显式的锁(§9.2)。clients这个map被限制在了一个独立的goroutine中,broadcaster,所以它不能被并发地访问。多个goroutine共享的变量只有这些channel和net.Conn的实例,两个东西都是并发安全的。我们会在下一章中更多地讲解约束,并发安全以及goroutine中共享变量的含义。 -**练习 8.12:** 使broadcaster能够将arrival事件通知当前所有的客户端。这需要你在clients集合中,以及entering和leaving的channel中记录客户端的名字。 +**练习 8.12:** 使broadcaster能够在每个新的客户端到来时通知它当前的客户端集合。这需要你在clients集合中,以及entering和leaving的channel中记录客户端的名字。 **练习 8.13:** 使聊天服务器能够断开空闲的客户端连接,比如最近五分钟之后没有发送任何消息的那些客户端。提示:可以在其它goroutine中调用conn.Close()来解除Read调用,就像input.Scanner()所做的那样。