Golang中国

主进程同时启动了3个goroutine,一个接受tcp数据,两个在读channel,任何一个goroutine出了异常退出时,另两个也要一起退出,怎么实现比较好?
谢谢

3 回复
tomine
#1 tomine • 2017-05-16 12:39

用context包行不行?

bigbear
#2 bigbear • 2017-05-18 13:07

创建第四个channel, 将这个channel作为异常的信号发送通道.
开启你的三个goruntine时, 把第四个channel传递过去. 并且在这三个goruntine里面用select读取2个channel.
在任何一个gorutnine中有异常是, close(第四个channel), 其他2个goruntine中都可以收到信号. 然后做相关处理.

oneofwower
#3 oneofwower • 2017-05-18 15:18

2楼正解,请使用channel来通信

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。