当前位置: 首页 > 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

相关文章:

  • 编译ffmpeg动态库时设置RPATH为$ORIGIN
  • P8680 [蓝桥杯 2019 省 B] 特别数的和
  • RAFT: Recurrent All-Pairs Field Transforms for Optical Flow用于光流估计的循环全对场变换
  • Python 小高考篇(2)字符串
  • WorkFlow源码剖析——Communicator之TCPServer(下)
  • 考研季来啦!考研过程中有哪些事情需要避坑?
  • 计算机网络分析题
  • 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类框架的俄罗斯方块游戏
  • 【动态规划】斐波那契数列模型总结