当前位置: 首页 > news >正文

Golang|select

文章目录

    • 多路监听
    • 超时控制

多路监听

在这里插入图片描述

  • 如果selcet外面没有for循环,则只会监听一次,要实现一直监听的话要加for循环
  • 但是如果要设置退出条件的话,break语句只会退出这个select而不会退出for循环

在这里插入图片描述

  • select也可以有default,用于不用等channel的阻塞的情况,也就是如果有数据我就读如果没有数据我也不想要被阻塞的情况,速度很快

在这里插入图片描述
在这里插入图片描述

超时控制

  • 有时候我们的函数可能会执行很长一段时间,我们希望能有一个最长执行时间的控制,超过这个时间后我都不想再继续等了

  • 第一种做法:时间到了之后往channel放入元素

在这里插入图片描述
在这里插入图片描述

  • 第二种方法:time.After,会返回一个只读的channel,当等设定好的一段时间后,会往返回的channel放入元素

在这里插入图片描述

  • 第三种方案:借助context,context.WithCancel,ctx里面有done方法,会返回只读channel,没有元素,但是我们显式执行cancel之后会关闭done返回的channel,也不会使select阻塞

在这里插入图片描述

  • 第四种方法:context.WithTimeout,当超时,会直接关闭ctx的管道

在这里插入图片描述

相关文章:

  • 3. Framer Motion 中 motion 组件
  • 【目标检测】【YOLO综述】YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统
  • Flutter 播放利器:`media_kit` 的详细介绍与使用指南
  • 在GitHub action中使用添加项目中配置文件的值为环境变量
  • Apache Kafka UI :一款功能丰富且美观的 Kafka 开源管理平台!!
  • Golang|Kafka在秒杀场景中的应用
  • day29图像处理OpenCV
  • gitlab如何查看分支的创建时间
  • tomcat http 怎么改成 https
  • 如何安全地管理固定功能设备?
  • STM32移植文件系统FATFS——片外SPI FLASH
  • 房天下平台API接口开发指南
  • Android12 自定义系统服务
  • Cython中操作C++字符串
  • BLUE-ANT 静电防护
  • PDX列式存储
  • HarmonyOS 5 开发环境全解析:从搭建到实战
  • 鹰角:EMR Serverless Spark 在《明日方舟》游戏业务的应用
  • 2025年4月15日 百度一面 面经
  • MongoDB入门与安装指南
  • A股2024年年报披露收官,四分之三公司盈利
  • 乌方公布矿产协议详情:未提债务义务,包含美再援助条款
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 市场监管总局出手整治涉企乱收费,聚焦政府部门及下属单位等领域
  • 全国人民代表大会常务委员会公告〔十四届〕第十号
  • 医学统计专家童新元逝世,终年61岁