美文网首页
无缓冲channel

无缓冲channel

作者: 七八个星天 | 来源:发表于2019-07-23 10:07 被阅读0次

无缓冲channel可用于两个不同go程间同步数据,即在一个go程中阻塞channel,在另外一个go程中释放channel,以达到数据同步的目的。声明方式:ch := make(chan int)
无缓冲channel不能用来保存数据,其长度和容量都为零,可查看长度和容量:len(ch)/cap(ch)
示例代码:

package main

import (
    "fmt"
)

func main() {
    //无缓冲channel
    ch := make(chan int)
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Printf("第%d次写入数据\n", i)
            ch <- i
            fmt.Printf("chan长度是:%d,容量是:%d\n", len(ch), cap(ch))
        }
    }()
    for i := 0; i < 5; i++ {
        fmt.Printf("第%d次读取数据\n", <-ch)
    }
}

在这段代码中,多有读取的数据必然需要先写入

相关文章

  • 2019-06-01

    Tags: channel [单选题]关于无缓冲和有缓冲的channel,下面说法正确的是()A无缓冲的chann...

  • 无缓冲channel

    无缓冲channel可用于两个不同go程间同步数据,即在一个go程中阻塞channel,在另外一个go程中释放ch...

  • Go 并发模式

    1. 共享内存 2. 互斥锁 3. 无缓冲channel 4. 带缓冲channel 5. sync.WaitGroup

  • Go语言channel备忘录

    目录 无缓冲channel等价于缓冲大小为0的channel,而不是1 发送者和接收者哪些情况会阻塞 close哪...

  • golang channel详解

    channel是什么? 使用场景 使用方式##无缓冲区的channel创建 var NoRoutChannel c...

  • Go管道初识

    Go管道初识 Go管道基础知识 管道分类 无缓冲(unbuffered channel)无缓冲的通道是指在接收前没...

  • 第一个goroutine + channel 程序

    无缓冲通道TODO: ...... 有缓冲通道TODO: ...... channel 模拟 生产者和消费者 Ti...

  • go并发编程 - 待完善

    定义channel 循环接收channel 数据 channel 阻塞 关闭channel 缓冲channel 单...

  • Go语言的有缓冲channel和无缓冲channel

    https://blog.csdn.net/q191201771/article/details/10364101...

  • 2020-09-24 无缓冲和有缓冲通道

    Go语言的有缓冲channel和无缓冲channel的区别,有一段很常见的代码。 这里程序的执行结果是,可以看到c...

网友评论

      本文标题:无缓冲channel

      本文链接:https://www.haomeiwen.com/subject/grnnlctx.html