文档章节

GO chan 编程

老汉-憨憨
 老汉-憨憨
发布于 2017/05/15 19:45
字数 117
阅读 25
收藏 0
package main

import (
	"fmt"
	"math/rand"
	"sync"
)

func main() {

	numberChan1 := make(chan int64, 3)
	numberChan2 := make(chan int64, 3)
	numberChan3 := make(chan int64, 3)

	var waitGroup sync.WaitGroup
	waitGroup.Add(3)

	go func() {
		for n := range numberChan1 {
			if n%2 == 0 {
				numberChan2 <- n
			} else {
				fmt.Printf("Filter %d. [filter 2]\n", n)
			}
		}
		close(numberChan2)
		waitGroup.Done()
	}()

	go func() {
		for n := range numberChan2 {
			if n%5 == 0 {
				numberChan3 <- n
			} else {
				fmt.Printf("Filter %d. [filter 5]\n", n)
			}
		}
		close(numberChan3)
		waitGroup.Done()
	}()

	go func() {
		for n := range numberChan3 {
			fmt.Println("n = ", n)
		}
		waitGroup.Done()
	}()

	for i := 0; i < 100; i++ {
		numberChan1 <- rand.Int63n(100)
	}
	close(numberChan1)

	waitGroup.Wait()
}

 

© 著作权归作者所有

老汉-憨憨
粉丝 20
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问
go语言学习-并发编程

goroutine 一个goroutine仅需4~5KB的栈内存(按需增减),不线程栈相比也少得多。这让“同时运行”成千上万个并发任务成为可能。(注意:不要滥用!) 通过基于OS线程的多路复用技术来实现更灵活的调...

solate
2016/07/22
15
0
C++协程库--orchid

orchid是一个构建于强大的boost库基础上的C++库,类似于python下的gevent/eventlet,为用户提供基于协程的并发模型。 协程,顾名思义,协作式程序,其思想是,一系列互相依赖的协程间依次使用...

江浸月
2012/12/27
3K
0
《Google Go: A Primer》学习笔记

What is Go? simple,fast,safe and concurrent Reading Go 编辑hello.go 经典的Hello World 运行hello.go:方式1、 超快的编译速度,使得go可以像php一样执行 方式2、 编译执行,go可以像C、...

学习吧
2015/10/12
82
0
coroutine_event

在libevent的基础上提供同步的接口,在获得异步效率的同时提供更方便的编程方式,即提供基于协程的并发模型。 green化 将IO对象进行改造以能和协程进行配合。在某种意义上,协程与线程的关系...

colaghost_01
2013/08/09
927
0
【Go语言】【18】GO语言的select

一、select Go语言引入了select关键字,其语法与switch非常类似,先看一个switch例子: 运行该程序,可以正常打印出“ok” 下面把switch替换为select: 运行该程序抛出错误:a == 1 evaluate...

qingkechina
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
15
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
10
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
14
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部