zoukankan      html  css  js  c++  java
  • Golang并发编程中select简单了解

    select可以监听channel的数据流动
    select的用法与switch语法非常类似,由select开始的一个新的选择块,每个选择条件由case语句来描述

    与switch语句可以选择任何使用相等比较的条件相比,select由比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作

    select { //不停的在这里检测
    case <-chanl : //检测有没有数据可以读
    //如果chanl成功读取到数据,则进行该case处理语句
    case chan2 <- 1 : //检测有没有可以写
    //如果成功向chan2写入数据,则进行该case处理语句
    
    
    //假如没有default,那么在以上两个条件都不成立的情况下,就会在此阻塞//一般default会不写在里面,select中的default子句总是可运行的,因为会很消耗CPU资源
    default:
    //如果以上都没有符合条件,那么则进行default处理流程
    }

    在一个select语句中,Go会按顺序从头到尾评估每一个发送和接收的语句。

    如果其中的任意一个语句可以继续执行(即没有被阻塞),那么就从那些可以执行的语句中任意选择一条来使用。
    如果没有任意一条语句可以执行(即所有的通道都被阻塞),那么有两种可能的情况:
    ①如果给出了default语句,那么就会执行default的流程,同时程序的执行会从select语句后的语句中恢复。
    ②如果没有default语句,那么select语句将被阻塞,直到至少有一个case可以进行下去。

  • 相关阅读:
    编译安装mysql5.7.9
    配置阿里云作为yum 源
    python 序列类型
    python 数据类型之list
    python 数据类型之数float
    深度学习与中文短文本分析总结与梳理
    相似度的算法(欧几里德距离和皮尔逊算法)
    人工智能(Machine Learning)—— 机器学习
    python设置redis过期时间
    K-均值聚类(K-means)算法
  • 原文地址:https://www.cnblogs.com/wt645631686/p/9677868.html
Copyright © 2011-2022 走看看