首页 > 技术文章 > 【GO】golang 协程初探 ,基于生产者/消费者

jzsg 2019-06-14 15:46 原文


package main

import (
	"fmt"
	"time"
)

func main() {
	// 管道 固定5个int
	ch := make(chan int, 5)
	// 生成者 协程
	// 管道只能存5个int, 但是要生产15个int, 这就要等消费者先消费完(未消费前生产会阻塞), 然后生产
	go func(ch chan int) {
		for i := 0; i < 15; i++ {
			ch <- i
			fmt.Println("put data: ", i)
		}
	}(ch)

	// 主线程充当消费者, 一直会等待把生产数据全部读完
	for {
		data := <-ch
		fmt.Println("read data: ", data)
		time.Sleep(time.Second)
	}

}


推荐阅读