mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
Merge pull request #352 from yyandrew/misc/typo
MISC - 69行`发生操作才可能完成`应该是`发送操作才可能完成`
This commit is contained in:
commit
41b984c32f
@ -66,7 +66,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
根据Go语言内存模型规范,对于从无缓冲Channel进行的接收,发生在对该Channel进行的发送完成之前。因此,后台线程`<-done`接收操作完成之后,`main`线程的`done <- 1`发生操作才可能完成(从而退出main、退出程序),而此时打印工作已经完成了。
|
根据Go语言内存模型规范,对于从无缓冲Channel进行的接收,发生在对该Channel进行的发送完成之前。因此,后台线程`<-done`接收操作完成之后,`main`线程的`done <- 1`发送操作才可能完成(从而退出main、退出程序),而此时打印工作已经完成了。
|
||||||
|
|
||||||
上面的代码虽然可以正确同步,但是对管道的缓存大小太敏感:如果管道有缓存的话,就无法保证main退出之前后台线程能正常打印了。更好的做法是将管道的发送和接收方向调换一下,这样可以避免同步事件受管道缓存大小的影响:
|
上面的代码虽然可以正确同步,但是对管道的缓存大小太敏感:如果管道有缓存的话,就无法保证main退出之前后台线程能正常打印了。更好的做法是将管道的发送和接收方向调换一下,这样可以避免同步事件受管道缓存大小的影响:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user