版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/javaxflinux/article/details/89084825
示例代码
package main
import (
"fmt"
"sync"
)
func sendMsg(msg_ch chan string, wg *sync.WaitGroup) {
fmt.Println("sendMsg start")
msg_ch <- "hello 1" //向通道中写数据
fmt.Println("sendMsg end")
wg.Done()
}
func recvMsg(msg_ch chan string, wg *sync.WaitGroup) {
fmt.Println("recvMsg start")
msg := <- msg_ch //阻塞等待通道数据可读
fmt.Println("msg:", msg)
fmt.Println("recvMsg end")
wg.Done()
}
func main() {
fmt.Println("00")
wg := sync.WaitGroup{}
wg.Add(2)
msg_ch := make(chan string) //通过channel来通信
go sendMsg(msg_ch, &wg) //启动roroutine并发执行
go recvMsg(msg_ch, &wg) //启动roroutine并发执行
fmt.Println("11")
wg.Wait() //等待全部goroutine结束
fmt.Println("22")
}
运行结果
00
11
recvMsg start
sendMsg start
sendMsg end
msg: hello 1
recvMsg end
22