码迷,mamicode.com
首页 > 其他好文 > 详细

go语音之进阶篇无缓冲channel

时间:2019-01-16 18:03:57      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:for   highlight   cond   pre   port   UNC   func   class   大小   

1、无缓冲channel

示例:

package main

import (
	"fmt"
	"time"
)

func main() {
	//创建一个无缓存的channel
	ch := make(chan int, 0)

	//len(ch)缓冲区剩余数据个数, cap(ch)缓冲区大小
	fmt.Printf("len(ch) = %d, cap(ch)= %d\n", len(ch), cap(ch))

	//新建协程
	go func() {
		for i := 0; i < 3; i++ {
			fmt.Printf("子协程:i = %d\n", i)
			ch <- i //往chan写内容
		}
	}()

	//延时
	time.Sleep(2 * time.Second)

	for i := 0; i < 3; i++ {
		num := <-ch //读管道中内容,没有内容前,阻塞
		fmt.Println("num = ", num)
	}

}

执行结果:

len(ch) = 0, cap(ch)= 0
子协程:i = 0
num =  0
子协程:i = 1    
子协程:i = 2   
num =  1
num =  2

  

go语音之进阶篇无缓冲channel

标签:for   highlight   cond   pre   port   UNC   func   class   大小   

原文地址:https://www.cnblogs.com/nulige/p/10278231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!