美文网首页
有缓冲channel

有缓冲channel

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

    有缓冲channel通道容量可自定义,可用于数据传递。声明方式:ch := make(chan int, 3)
    长度表示通道中暂存的数据个数,容量表示最大数据个数。len(ch)/cap(ch)
    有缓冲channel只有在容量占满的情况下才发生阻塞,数据读取遵循先进先出的原则。
    代码示例:

    package main
    
    import (
        "fmt"
        "time"
    )
    
    /**
    有缓冲channel
    */
    func testChannel() {
        ch := make(chan int, 3)
        go func() {
            for i := 0; i < 10; i++ {
                fmt.Printf("写入第%d个数据\n", i)
                ch <- i
                fmt.Printf("容量:%d,长度:%d\n", cap(ch), len(ch))
            }
        }()
        time.Sleep(time.Second * 3)
        for i := 0; i < 10; i++ {
            fmt.Printf("读取第%d个数据\n", <-ch)
        }
    
    }
    
    func main() {
        testChannel()
    }
    
    

    相关文章

      网友评论

          本文标题:有缓冲channel

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