文章导航目录
简述流程:流程图流程注释:代码实现:
简述流程:
1、开启一个writeData 协程,向管道中写入50个整数 2、开启一个readData 协程,从管道intChan中读取writeData写入的数据 3、注意:write 和read 操作的是同一个管道 4、主线程需要等待writeData 和 readData协程都完成工作才能退出管道
流程图
流程注释:
intChan 负责内容的写和读for 循环是为了防止协程还未读取完导致当前主线程关闭
代码实现:
package main
import (
"fmt"
)
func writeData(intChan
chan int){
for i
:= 1; i
< 50; i
++ {
intChan
<-i
fmt
.Println("writeData 写入数据", i
)
}
close(intChan
)
}
func readData(intChan
chan int, exitChan
chan bool){
for {
v
, ok
:= <-intChan
if !ok
{
break
}
fmt
.Printf("readData 读到数据=%v \n", v
)
}
exitChan
<- true
close(exitChan
)
}
func main() {
intChan
:= make(chan int, 50)
exitChan
:= make(chan bool, 1)
go writeData(intChan
)
go readData(intChan
, exitChan
)
for {
_, ok
:= <-exitChan
if !ok
{
break
}
}
}
我会两种语言,一种写给程序执行,一种说给你听. 来自LiuYoung的个人博客 Copyright © 冀ICP备20002380号
Smile
如果文章对你帮助,记得留下一个赞哦~~