Skip to content

Commit

Permalink
fix issue 68
Browse files Browse the repository at this point in the history
  • Loading branch information
qcrao committed Nov 30, 2023
1 parent 9cfceb9 commit b28fd73
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion content/channel/8-如何优雅地关闭 channel.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func main() {

看一下代码其实存在很多问题首先IsClosed 函数是一个有副作用的函数每调用一次都会读出 channel 里的一个元素改变了 channel 的状态这不是一个好的函数干活就干活还顺手牵羊

其次IsClosed 函数返回的结果仅代表调用那个瞬间并不能保证调用之后会不会有其他 goroutine 对它进行了一些操作改变了它的这种状态例如IsClosed 函数返回 true但这时有另一个 goroutine 关闭了 channel而你还拿着这个过时的channel 未关闭的信息向其发送数据就会导致 panic 的发生当然一个 channel 不会被重复关闭两次如果 IsClosed 函数返回的结果是 true说明 channel 是真的关闭了
其次IsClosed 函数返回的结果仅代表调用那个瞬间并不能保证调用之后会不会有其他 goroutine 对它进行了一些操作改变了它的这种状态例如IsClosed 函数返回 false但这时有另一个 goroutine 关闭了 channel而你还拿着这个过时的channel 未关闭的信息向其发送数据就会导致 panic 的发生当然一个 channel 不会被重复关闭两次如果 IsClosed 函数返回的结果是 true说明 channel 是真的关闭了

有一条广泛流传的关闭 channel 的原则

Expand Down

0 comments on commit b28fd73

Please sign in to comment.