分享
  1. 首页
  2. 文章

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

genispan · · 3105 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

上一篇文章提到了普通的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)
	}
}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:genispan

查看原文:GO 使用channel进行同步 (缓冲channel)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3105 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏