Go学习之channel&&同步

Posted martinue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go学习之channel&&同步相关的知识,希望对你有一定的参考价值。

package main

import (
	"fmt"
	"sync"
)

func fibonacci(n int, c chan int, waitGroup *sync.WaitGroup) {
	defer waitGroup.Done()
	x, y := 0, 1
	for i := 0; i < n; i++ {
		c <- x
		x, y = y, x+y
	}
	close(c)
}

func get(n int, c chan int, waitGroup *sync.WaitGroup) {
	defer waitGroup.Done()
	for i := range c {
		fmt.Printf("i:[%v]  chan num:[%v]\\n", n, i)
	}
}

func main() {
	var wg sync.WaitGroup
	wg.Add(5)
	c := make(chan int, 10)
	go fibonacci(cap(c), c, &wg)
	go get(0, c, &wg)
	go get(1, c, &wg)
	go get(2, c, &wg)
	go get(3, c, &wg)
	wg.Wait()
}

 

以上是关于Go学习之channel&&同步的主要内容,如果未能解决你的问题,请参考以下文章

Go学习之channel&&同步

JS学习之 && 和 ||

Python学习之三对象和类型&amp;&amp;运算符

Linux学习-Docker学习之Dockerfile

GO的并发之道-Goroutine调度原理&Channel详解

flink学习之十一-window&EventTime实例