zoukankan      html  css  js  c++  java
  • 关于golang select的用法

    1 go的信道

    1.1 什么是信道

    信道可以理解为go协程之间进行通信的通道。

    1.2 信道的声明

    所有的信道都关联一个类型,一旦关联了类型,该信道就只能传输该类型的数据,传输其它类型的数据的话就是非法的。

    chan T表示t类型的信道。

    var b chan int,声明一个信道b

    1.3 定义一个信道

    b := make(chan int)

    1.4 通过信道进行数据的发送和接收

    箭头离开信道表示从信道中接收数据:data := <- b

    箭头指向信道的话,就是发送数据 : b <- data

    1.5 信道的发送和接收默认是阻塞的

    当把数据发送给信道时,程序控制会在发送数据的语句处阻塞,直到有其它go协程从信道中读取数据才会解除阻塞。读取信道时,如果没有其它协程把数据写入该信道,读取过程也会阻塞。

    2 什么是select

    select是用于通信的switch语句,每条case是一个信道操作,如果有数据读写,那么select会随机选择一个执行,然后退出整个select,如果没有读写,那么阻塞,或者执行default,然后退出。

    也就是说,一次select执行只会执行case或者default中的一个分支。

  • 相关阅读:
    Hbase-06-Snapshot原理
    Hbase-05-备份表数据
    Hbase-04-hbck
    Python Exception Handling
    10.TiPD 调度
    8.存储引擎TiFlash
    6.TiDB数据库的存储
    7.存储引擎TiKV
    4.Tidb SQL优化(一)
    5.TiDB SQL优化(二)
  • 原文地址:https://www.cnblogs.com/hustdc/p/11315759.html
Copyright © 2011-2022 走看看