无缓冲channel

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

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

上一篇 下一篇

猜你喜欢

热点阅读