您的位置:首页 > 编程语言 > Go语言

GO 使用channel进行同步 (缓冲channel)

2015-02-03 21:55 381 查看
上一篇文章提到了普通的channel用来进行线程的同步。Go语言里面还有一种缓冲式的channel。

ch := make(chan int, 100)

需要执行类型和缓冲区的大小。

package main

import "fmt"

func main() {
c := make(chan int, 2) //建立int类型大小为2的缓冲区
c <- 1  //缓冲区1赋值为1
c <- 2	//缓冲区2赋值为2
fmt.Println(<-c) //输出缓冲区1
fmt.Println(<-c) //输出缓冲区2
}
可以循环 for i := range c 来不断从 channel 接收值,直到它被关闭。

package main

import (
"fmt"
)

func fibonacci(n int, c chan int) {
x, y := 1, 1
for i := 0; i < n; i++ {
c <- x
x, y = y, x+y
}
close(c)
}

func main() {
c := make(chan int, 10)
go fibonacci(cap(c)+2, c)
for i := range c {
fmt.Println(i)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: