hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang select不壅塞吗_后端开发

2019-12-18后端开发ki4网12°c
A+ A-

select是go言语中经常使用的一个关键字,是用来监听和channel有关的IO操纵,当 IO 操纵发作时,触发响应的行动。

假如有多个case都能够运转,Select会随机公高山选出一个实行。其他不会实行。 (引荐进修:go)

不然:

假如有default子句,则实行该语句。

假如没有default字句,select将壅塞,直到某个通讯能够运转;Go不会从新对channel或值举行求值。

基础用法

//select基础用法
select {
case <- chan1:
// 假如chan1胜利读到数据,则举行该case处置惩罚语句
case chan2 <- 1:
// 假如胜利向chan2写入数据,则举行该case处置惩罚语句
default:
// 假如上面都没有胜利,则进入default处置惩罚流程

假如有一个或多个IO操纵能够完成,则Go运转时体系会随机的挑选一个实行,不然的话,假如有default分支,则实行default分支语句,假如连default都没有,则select语句会一向壅塞,直到至少有一个IO操纵能够举行

start := time.Now()
    c := make(chan interface{})
    ch1 := make(chan int)
        ch2 := make(chan int)

    go func() {

        time.Sleep(4*time.Second)
        close(c)
    }()

    go func() {

        time.Sleep(3*time.Second)
        ch1 <- 3
    }()

      go func() {

        time.Sleep(3*time.Second)
        ch2 <- 5
    }()

    fmt.Println("Blocking on read...")
    select {
    case <- c:

        fmt.Printf("Unblocked %v later.\n", time.Since(start))

    case <- ch1:

        fmt.Printf("ch1 case...")
      case <- ch2:

        fmt.Printf("ch1 case...")
    default:

        fmt.Printf("default go...")
    }

运转上述代码,因为当前时候还未到3s。所以,现在顺序会走default。

以上就是golang select不壅塞吗的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang select不壅塞吗_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>