This is a creation in Article, where the information may have evolved or changed.
Golang in sync. The Waitgroup function is similar to channel and can be implemented concurrently.
Package Main
Import (
"FMT"
"Runtime"
"Sync"
)
Func Main () {
Runtime. Gomaxprocs (runtime. NUMCPU ())//multicore
WG: = Sync. waitgroup{}
Wg. ADD (10)
For I: = 0; I < 10; i++ {
Go f (&WG, I)
}
Wg. Wait ()
}
Func F (w *sync. Waitgroup, I int) {
Fmt. Println (i, "go")
W.done ()
}
Golang Select is used in conjunction with the channel.
Package Main
Import (
"FMT"
"Runtime"
)
Func Main () {
Runtime. Gomaxprocs (runtime. NUMCPU ())
C1, C2: = make (chan int), make (Chan string)
Flag: = Make (chan bool, 2)
Go func () {
for {
Select {
Case K, Err: = <-c1:
If!err {
Flag <-True
Break
}
Fmt. Println (k)
Case K, Err: = <-c2:
If!err {
Flag <-True
Break
}
Fmt. Println (k)
}
}
}()
C1 <-1
C2 <-"a"
C1 <-2
C2 <-"B"
Close (C1)
Close (C2)
For I: = 0; I < 2; i++ {
<-flag
}
}