golang 多个routine之间的同步
发布时间:2020-12-16 18:03:12 所属栏目:大数据 来源:网络整理
导读:本文以一个例子的方式介绍channel在同步中的使用。 下面的例子中,主task首先阻塞,直到两个task完成后,再继续执行。 package main import ( "log" "time" ) func main() { ch := make ( chan int ) go task1(ch) go task2(ch) for i: =0 ; i 2 ; i++ { v :
本文以一个例子的方式介绍channel在同步中的使用。 下面的例子中,主task首先阻塞,直到两个task完成后,再继续执行。 package main
import (
"log"
"time"
)
func main() {
ch := make(chan int)
go task1(ch)
go task2(ch)
for i:=0; i<2; i++ {
v := <-ch
log.Println("one task done:",v)
}
log.Println("All task done")
}
func task1(c chan int) {
time.Sleep(1*time.Second)
c <- 1
}
func task2(c chan int) {
time.Sleep(10*time.Second)
c <- 2
}
output:
执行过程如下: 最后主task,继续执行到完成; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |