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://csruizhi.cn/article/iisphd.html

其他资讯

Copyright © 2007-2024 成都优众联杰科技有限公司 All Rights Reserved 蜀ICP备2024116266号
友情链接: 营销型网站建设 公司网站建设 营销型网站建设 手机网站设计 成都营销网站建设 成都网站建设公司 品牌网站建设 成都网站制作 网站建设方案 企业网站设计 成都网站建设 成都网站建设 手机网站建设套餐 响应式网站设计 高端网站设计 成都网站制作 营销网站建设 成都网站建设 营销网站建设 定制级高端网站建设 成都响应式网站建设 成都网站建设公司