关于chan的一点疑惑,望大家解答,谢谢!

love00wanggang · 2015-03-25 13:23:19 · 2365 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2015-03-25 13:23:19 的主题,其中的信息可能已经有所发展或是发生改变。

1、在一次循环中生成了很多个chan, 那么在循环结束时是否要关闭这些chan, 如不关闭会造成资源泄漏么?

2、多个协程 对一个 chan 写入, 一个协程读取此chan中的内容, 如果突然关闭此chan 就会造成已启动的多个写协程 对已关闭的chan写操作导致的崩溃, 如何避免这种情况?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2365 次点击  
加入收藏 微博
9 回复  |  直到 2015-03-27 08:19:24
jppxhz01
jppxhz01 · #1 · 10年之前

菜鸟来尝试回答。。 1 我的理解是 close 是用来告知不会再对chan输入数据,而不是对资源的释放,所以不进行close应该没问题 2 不知道楼主是在什么情境下会突然关闭chan,我的经验是确保最后一个写入才关闭chan

ckrissun
ckrissun · #2 · 10年之前

不要在读chan的这一方关闭,应该由负责写chan的一方来关闭。v, ok := <- ch 可以判断ch是否关闭

blov
blov · #3 · 10年之前
ckrissunckrissun #2 回复

不要在读chan的这一方关闭,应该由负责写chan的一方来关闭。v, ok := <- ch 可以判断ch是否关闭

:thumbsup:

love00wanggang
love00wanggang · #4 · 10年之前

收到 我试下哈

love00wanggang
love00wanggang · #5 · 10年之前
jppxhz01jppxhz01 #1 回复

菜鸟来尝试回答。。 1 我的理解是 close 是用来告知不会再对chan输入数据,而不是对资源的释放,所以不进行close应该没问题 2 不知道楼主是在什么情境下会突然关闭chan,我的经验是确保最后一个写入才关闭chan

3q

ckrissun
ckrissun · #6 · 10年之前

这属于 MPSC(多生产者单消费者)。既然只能在写chan的一方关闭,但要保证只能由一个goroutine关闭这个chan,而且chan关闭后,其余goroutine不能写入。简单点,可以加入一个chan的状态监控,当然这个状态应该是 原子的,因为有多个goroutine来写chan。

love00wanggang
love00wanggang · #7 · 10年之前
ckrissunckrissun #6 回复

这属于 MPSC(多生产者单消费者)。既然只能在写chan的一方关闭,但要保证只能由一个goroutine关闭这个chan,而且chan关闭后,其余goroutine不能写入。简单点,可以加入一个chan的状态监控,当然这个状态应该是 原子的,因为有多个goroutine来写chan。

:wink: ok

qkb_75_go
qkb_75_go · #8 · 10年之前

资源泄漏........大约只有 C/C++ 的童鞋有这种顾虑吧。

love00wanggang
love00wanggang · #9 · 10年之前
qkb_75_goqkb_75_go #8 回复

资源泄漏........大约只有 C/C++ 的童鞋有这种顾虑吧。

确实是写过c/c++

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传