不同通道上的select与多个并发协程有逻辑或性能上的区别吗?
创始人
2025-01-09 19:33:55
0

在多个并发协程中,可以使用select同时监听多个通道的数据。例如:

package main

import (
    "fmt"
)

func main() {
    ch1 := make(chan int)
    ch2 := make(chan int)

    go func() {
        for i := 0; i < 5; i++ {
            ch1 <- i
        }
    }()
    go func() {
        for i := 5; i < 10; i++ {
            ch2 <- i
        }
    }()

    for i := 0; i < 10; i++ {
        select {
        case x := <-ch1:
            fmt.Printf("Received %d from ch1\n", x)
        case x := <-ch2:
            fmt.Printf("Received %d from ch2\n", x)
        }
    }
}

在上面的代码中,我们创建了两个通道ch1和ch2,并在两个不同的并发协程中往通道中发送数据。然后,在主协程中使用select同时监听两个通道,只有一个通道中有数据时,就会执行对应的代码块。

我们将代码改为使用多个并发协程同时监听同一个通道:

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan int)

    go func() {
        for i := 0; i < 5; i++ {
            ch <- i
        }
    }()
    go func() {
        for i := 5; i < 10; i++ {
            ch <- i
        }
    }()
    go func() {
        for {
            select {
            case x := <-ch:
                fmt.Printf("Received %d\n", x)
            }
        }
    }()

    time.Sleep(time.Second)
}

在上面的代码中,我们创建了一个通道ch,并在两个不同的并发协程中往通道中发送数据。然后,我们创建一个新的并发

相关内容

热门资讯

推荐一款!手机透视辅助器app... 推荐一款!手机透视辅助器app,爱玩娱乐暗堡辅助,2026新版(有挂神器)-哔哩哔哩 了解更多开挂安...
必备攻略!皮皮胡子辅助,hhp... 必备攻略!皮皮胡子辅助,hhpoker辅助是真的吗,解密教程(今日头条)-哔哩哔哩;打开点击测试直接...
分享认知!杭州都莱辅助软件下载... 分享认知!杭州都莱辅助软件下载,红龙poker辅助工具,微扑克教程(有挂秘笈)-哔哩哔哩;无需打开直...
必看攻略!欢乐茶馆挂,德州hh... 必看攻略!欢乐茶馆挂,德州hhpoker是真的吗,黑科技教程(有挂头条)-哔哩哔哩 【无需打开直接搜...
推荐十款!陕西扣点点脚本辅助器... 推荐十款!陕西扣点点脚本辅助器,创思维激k看底牌辅助,靠谱教程(有挂秘诀)-哔哩哔哩【无需打开直接搜...
透视好牌!陕麻圈破解,hhpo... 透视好牌!陕麻圈破解,hhpoker辅助靠谱吗,透明挂教程!(有挂头条)-哔哩哔哩;亲,陕麻圈破解这...
记者爆料!微乐自建房怎么提高胜... 微乐自建房怎么提高胜率是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以...
总算明白!上饶打炸作弊,德州局... 上饶打炸作弊开挂教程视频分享装挂详细步骤在当今的网络游戏中,上饶打炸作弊作为一种经典的娱乐方式,吸引...
重大通报!四川微乐自建房辅助器... 重大通报!四川微乐自建房辅助器,杭州都莱破解版,玩家教你(有挂技巧)-哔哩哔哩;无需打开直接搜索打开...
今日头条!填大坑辅助视频,广东... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...