package main
import (
"fmt"
"time"
)
//channel
//A往管道里写数据 B往管道里读数据 go自动帮我们做好了同步
//创建管道 strChan := make(chan int) //装字符串的通道
//创建管道一定要使用make关键字
//无缓冲区管道channel
//
//读取
func main() {
numChan := make(chan int, 10) //装数字的管道 创建缓冲区为10的管道
// 创建两个go程 主程写数据 子go程读数据
//1.子go程 读取数据
go func() {
for i := 0; i < 50; i++ {
data := <-numChan
fmt.Println("子go程1111111111111111:", data)
//time.Sleep(1*time.Second)
}
}()
//go func() {
// for i:=0;i<50;i++{
// data :=<-numChan
// fmt.Println("子go程2222222222222222:",data)
// time.Sleep(1*time.Second)
// }
//}()
//2.主go程写入数据
for i := 0; i < 50; i++ {
// 向管道写入数据
numChan <- i
fmt.Println("这是主go程写入数据:", i)
//time.Sleep(1*time.Second)
//time.Sleep(1*time.Second)
}
fmt.Println("获取管道数据:--------")
//data := <-numChan
//fmt.Println(data)
time.Sleep(5 * time.Second)
}
goroutine:A往管道里写数据,B往管道里读数据
最新推荐文章于 2022-02-07 18:25:19 发布