美文网首页
chan通信

chan通信

作者: bocsoft | 来源:发表于2018-12-07 18:34 被阅读0次
package main

import "fmt"

func main() {
    intChan := make(chan int, 10)
    for i := 0; i < 10; i++ {
        intChan <- i
    }
    close(intChan)
    //同步信号
    syncChan := make(chan struct{}, 1)
    go func() {
    Loop:
        for {
            select {
            case e, ok := <-intChan:
                if !ok {
                    fmt.Println("End.")
                    break Loop
                }
                fmt.Printf("Received: %v\n", e)
            }
        }
        syncChan <- struct{}{} //同步信号
    }()

    <-syncChan

}

/*
输出结果:
Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 7
Received: 8
Received: 9
End.
 */



相关文章

  • chan通信

  • chan深入理解之源码分析

    chan的理解 chan用于协程间通信,结构体如下,代码位置为go/src/runtime/chan.go 从结构...

  • go channel

    channel channel一般用于goroutine之间的通信;初始化chan :=make(chan int...

  • 通道channel

    channel特点 chan类型的值本身的并发安全的,因此可用于多个goroutine之间通信 chan使用mak...

  • Go 语言基础—— 通道(channel)

    通过通信来共享内存(Java是通过共享内存来通信的) 定义 通道创建语法: make(chan 元素类型, 容量)...

  • Go 基础 4:channel拔高 和 select

    先说这个buffered chan就是在创建chan的时候加上个chan buffer的大小 基本的chan在se...

  • Chan

    梦已入睡 渡人自渡 渡一生莲花 …… 十里桃花 待嫁的年华 悠悠风来 埋在三生石下 …… 倘若我心中的如来 你眼中...

  • chan

    1.主协程只负责调用子协程,但是不会被子协程阻塞 2.在主协程中,无缓冲的chan需要输入输出成对出现,否则会死锁...

  • chan

    chan 不带缓存 make(chan 数据类型) 进和出都会阻塞. 读和写同时存在,才会同时退出阻塞。如果只...

  • chan

    你不能每天这么chan我的 我心里咯噔了一下 原来我已经这么缠你了吗 你不喜欢我缠了啊 每次看着好吃的我又吃不到 ...

网友评论

      本文标题:chan通信

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