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

go chan 的用法

chan 的用法

- chan是什么?
共享内存
csp:
  goroutine
  chan
  select


- chan的分类
unbuffered chan 同步收发
  1.阻塞,关闭后解阻塞,取出零值
buffer chan   异步收发
  1.buf满,则阻塞

nil chan
  1.永久阻塞
  2.关闭nil chan, panic

- chan操作: 收/发/关闭


- 特点
关闭的chan, 取值, 零值
关闭的chan, 存值, panic
关闭已关闭的ch, panic

解阻塞一个ch:
  1.收到值
  2.关闭ch

检测ch已close
  v,ok := <-ch //如果ok true则已关闭
  只有当channel无数据,且channel被close了,才会返回ok=false。


遍历chan

多发一收
一发多收, 发者关闭

无缓冲的chan:
  信号/锁
有缓冲的chan:
  计数信号/消息队列
for select:
  超时/心跳


http://www.kler.cn/a/390009.html

相关文章:

  • 基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1
  • YoloV10改进策略:Neck层改进|EFC,北理提出的适用小目标的特征融合模块|即插即用
  • Java基础(一)
  • ginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)
  • 如何在谷歌浏览器中设置自定义安全警告
  • 增广卡尔曼滤波AKF的要点分析
  • 计算机网络分析题
  • SpringClud一站式学习之Eureka服务治理(二)
  • 《当下的力量》读书笔记
  • K8S如何基于Istio实现全链路HTTPS
  • TensorFlow|猫狗识别
  • PDF24:多功能 PDF 工具使用指南
  • 计算机网络之HTTP协议
  • 红帆OA iorepsavexml.aspx文件上传漏洞
  • qt中编译使用freeglut库
  • 开源 PHP 商城项目 CRMEB 二次开发和部署教程
  • 【debug】QT 相关问题error汇总 QT5升级到QT6需要注意要点
  • 蓝桥杯备考——算法
  • MySQL数据导入与清洗
  • 【客观理性深入讨论国产中间件及数据库-科创基础软件】
  • 用react实现radio同时关联proform组件
  • 【C#】CS0246: 未能找到类型或命名空间名“MySql”
  • Django启动流程01-wsgi
  • ES7 查询超过10000条 返回条数错误
  • 基本MFC类框架的俄罗斯方块游戏
  • 【动态规划】斐波那契数列模型总结