有缓冲channel

2019-07-23  本文已影响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()
}

上一篇下一篇

猜你喜欢

热点阅读