请教一个golang的并发下,chan通道关闭
答案:1 悬赏:60 手机版
解决时间 2021-01-17 11:55
- 提问者网友:世勋超人
- 2021-01-16 16:36
请教一个golang的并发下,chan通道关闭
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-01-16 18:10
用select,实现代码如下:
先创建一个channel c 用于发送和接收整数
var c chan int
每一个文件处理完后,就发送整数1到c
func DoSomething(o interface{}){
o.dosomething()
c <- 1
}
然后在主函数中加下面代码:
L: for {
select {
case <−c:
i++ 17
if i > 1 {
break L
}
}
}
现在将会一直等待下去。只有当从 channel c 上收到多个响应时才会退出循环 L。
使其并行运行
注意这里如果有1000000万个文件,就修改为i >1000000 就可以了
先创建一个channel c 用于发送和接收整数
var c chan int
每一个文件处理完后,就发送整数1到c
func DoSomething(o interface{}){
o.dosomething()
c <- 1
}
然后在主函数中加下面代码:
L: for {
select {
case <−c:
i++ 17
if i > 1 {
break L
}
}
}
现在将会一直等待下去。只有当从 channel c 上收到多个响应时才会退出循环 L。
使其并行运行
注意这里如果有1000000万个文件,就修改为i >1000000 就可以了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯