首页后端开发GOGo-并发编程-使用 select 语句实现多路复用(二)

Go-并发编程-使用 select 语句实现多路复用(二)

时间2023-04-27 07:18:01发布访客分类GO浏览506
导读:注意事项在使用select语句时,需要注意以下几点:select语句只能用于通道的读写操作,不能用于普通变量的操作。如果多个通道同时就绪,select语句会随机选择一个通道来执行对应的操作。select语句中的case语句必须是常量表达式,...

注意事项

在使用select语句时,需要注意以下几点:

  1. select语句只能用于通道的读写操作,不能用于普通变量的操作。
  2. 如果多个通道同时就绪,select语句会随机选择一个通道来执行对应的操作。
  3. select语句中的case语句必须是常量表达式,不能是变量或表达式。 4. select语句中的default语句在所有通道都没有就绪时执行,但是如果有一个或多个通道就绪,那么default语句将不会执行。
  4. select语句执行完一个case后就会退出,如果需要持续监听通道状态,可以将select语句放在for循环中。

以下是一个在for循环中使用select语句的示例:

func main() {

    ch1 := make(chan int)
    ch2 := make(chan int)

    go func() {
    
        for i := 1;
     i = 5;
 i++ {

            ch1 - i
            time.Sleep(time.Second)
        }

    }
()

    go func() {
    
        for i := 6;
     i = 10;
 i++ {

            ch2 - i
            time.Sleep(time.Second)
        }

    }
()

    for {

        select {

        case msg1 := -ch1:
            fmt.Println("Received from ch1:", msg1)
        case msg2 := -ch2:
            fmt.Println("Received from ch2:", msg2)
        }

    }

}
    

在上面的示例中,我们启动了两个goroutine分别向两个通道中发送数据。然后我们将select语句放在一个无限循环中,以持续监听这两个通道的状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

go

若转载请注明出处: Go-并发编程-使用 select 语句实现多路复用(二)
本文地址: https://pptw.com/jishu/9981.html
Go-包和模块-main 包和其他包的区别 Go-并发编程-使用 select 语句实现多路复用(一)

游客 回复需填写必要信息