资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

channel的关闭和广播机制测试

package csp

import (
    "fmt"
    "sync"
    "testing"
)

/* func dataProducer(ch chan int, wg *sync.WaitGroup) {
    go func() {
        for i := 0; i < 10; i++ {
            ch <- i
        }
        wg.Done()
    }()
}

func dataReceiver(ch chan int, wg *sync.WaitGroup) {
    go func() {
        for i := 0; i < 10; i++ {
            data := <-ch
            fmt.Println(data)
        }
        wg.Done()
    }()

}

func TestChannelClose(t *testing.T) {
    ch := make(chan int)
    var wg sync.WaitGroup
    wg.Add(1)
    dataProducer(ch, &wg)
    wg.Add(1)
    dataReceiver(ch, &wg)
    wg.Wait()
} */

func dataProducer(ch chan int, wg *sync.WaitGroup) {
    go func() {
        for i := 0; i < 10; i++ {
            ch <- i
        }
        close(ch) //没有加closepanic了
        wg.Done()
    }()
}

func dataReceiver(ch chan int, wg *sync.WaitGroup) {
    go func() {
        for {
            if data, ok := <-ch; ok {
                fmt.Println(data)

            } else {
                break
            }
        }
        wg.Done()
    }()

}

func TestChannelClose(t *testing.T) {
    ch := make(chan int)
    var wg sync.WaitGroup
    wg.Add(1)
    dataProducer(ch, &wg)
    wg.Add(1)
    dataReceiver(ch, &wg)
    // wg.Add(1)
    // dataReceiver(ch, &wg)
    // wg.Add(1)
    // dataReceiver(ch, &wg)
    wg.Wait()
}

/*>go  test
0
1
2
3
4
5
6
7
8
9
PASS
ok        0.249s

> */

/*
func TestChannelClose(t *testing.T) {
    ch := make(chan int)
    var wg sync.WaitGroup
    wg.Add(1)
    dataProducer(ch, &wg)
    wg.Add(1)
    dataReceiver(ch, &wg)
    wg.Add(1)
    dataReceiver(ch, &wg)
    wg.Add(1)
    dataReceiver(ch, &wg)
    wg.Wait()
}
>go  test
0
1
4
5
6
7
8
9
3
2
PASS
ok        0.360s

> */

标题名称:channel的关闭和广播机制测试
浏览路径:http://cdkjz.cn/article/iisphd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220