不同通道上的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,并在两个不同的并发协程中往通道中发送数据。然后,我们创建一个新的并发

相关内容

热门资讯

黑科技最新(Wepoke后台)... 1、黑科技最新(Wepoke后台)wEPOKE一向存在有挂!太实锤了最初是有挂(2022已更新)(哔...
黑科技存在(德州之星)来玩德州... 此外,数据分析德州(德州之星)辅助神器app还具备辅助透视行为开挂功能,通过对客户德州之星透明挂的深...
黑科技线上(WPK德州版)aa... 黑科技线上(WPK德州版)aapokEr一直是真的有挂!太无语了素来存在有挂(2024已更新)(哔哩...
黑科技实锤(Wepoke免费)... 黑科技实锤(Wepoke免费)德州aapoker往昔有挂!太夸张了一贯真的有挂(2026已更新)(哔...
黑科技能赢(德州微扑克)WEP... 德州微扑克赢率提升策略‌;黑科技能赢(德州微扑克)WEPoke切实是有挂!太坑了从来有挂(2024已...
黑科技挂(WPK工具)传奇扑克... 黑科技挂(WPK工具)传奇扑克确实真的是有挂!太无语了都是真的有挂(2024已更新)(哔哩哔哩)是一...
黑科技模拟器(德扑之星ai代打... wpk德州扑克赢率提升策略‌;黑科技模拟器(德扑之星ai代打)wpk德州扑克素来是有挂!太离谱了原来...
黑科技辅助挂挂(微扑克到底有挂... 黑科技辅助挂挂(微扑克到底有挂)来玩德州app原先是真的有挂!太实锤了往昔是真的有挂(2021已更新...
黑科技有挂(Wepoke技术)... aaPoker赢率提升策略‌;黑科技有挂(Wepoke技术)aaPoker原来真的是有挂!太实锤了最...
黑科技科技(德州免费)wPk素... 黑科技科技(德州免费)wPk素来是真的有挂!太坑了素来有挂(2022已更新)(哔哩哔哩);致您一封信...