goroutine 和 channel

应用

实例1

package main

import (
	"fmt"
)

// 写入数据
func writeData(intChan chan int) {
	for i := 1; i <= 50; i++ {
		// 放入数据
		fmt.Printf("writeData=%v\n", i)
		intChan <- i
	}
	close(intChan)
}

// 读取数据
func readData(intChan chan int, exitChan chan bool) {
	for {
		v, ok :=<- intChan
		if !ok {
			break
		}
		fmt.Printf("readData=%v\n", v)
	}
	// readData 读取完数据后,即任务完成
	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
		}
	}

}

  

 

posted on 2021-09-15 14:45  温昀  阅读(16)  评论(0编辑  收藏  举报

导航