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

golang的管道阻塞问题

package  mainimport ("fmt""sync"//"time"
)
var  wg  sync.WaitGroup
func writeData(intchan chan int){defer  wg.Done()for i := 1; i <= 9; i++ {intchan<-ifmt.Println("写入的数据为:",i)//time.Sleep(time.Second)}close(intchan)
}
func readData( intchan chan int)  {defer  wg.Done()for value := range  intchan {fmt.Println("读取的数据为",value)}
}func main() {intchan := make(chan int ,10)wg.Add(1)go writeData(intchan)//go  readData(intchan)wg.Wait()}

package  mainimport ("fmt""sync"//"time"
)
var  wg  sync.WaitGroup
func writeData(intchan chan int){defer  wg.Done()for i := 1; i <= 10; i++ {intchan<-ifmt.Println("写入的数据为:",i)//time.Sleep(time.Second)}close(intchan)
}
func readData( intchan chan int)  {defer  wg.Done()for value := range  intchan {fmt.Println("读取的数据为",value)}
}func main() {intchan := make(chan int ,10)wg.Add(2)go writeData(intchan)//go  readData(intchan)wg.Wait()}

但是这里面wg.Add(2)主从协程我没明白。我起一个的时候是不会阻塞的,起两个会。跟容量就没关系,只要不读就会阻塞。

读写频率不同,也是可以,有读就不会阻塞

http://www.lryc.cn/news/223100.html

相关文章:

  • 用HTML + javaScript快速完成excel表格信息除重并合并
  • 高性能网络编程 - The C10M problem
  • java计算机毕业设计SpringBoot在线答疑系统
  • Doc as Code (4):使用Git做版本管理,而不是使用目录做版本管理
  • 【Codeforces】 CF1870E Another MEX Problem
  • 【Objective-C】Objective-C汇总
  • 怎么查找性别为女性的不同学历层次不同学位以及所有人不同职务职称的人数
  • 浅谈Elasticsearch查询和搜索
  • SLAM从入门到精通(被忽视的基础图像处理)
  • 【C++】继承详解
  • react:swr接口缓存
  • 2023-11 | 短视频批量下载/爬取某个用户的所有视频 | Python
  • 【JAVA学习笔记】66 - 本章作业(IO流)
  • vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案
  • Elasticsearch:在 ES|QL 中使用 DISSECT 和 GROK 进行数据处理
  • 基于自适应自回归模型的高级人工智能概念及其实现
  • windows的mysql启动错误,查看windows日志
  • centos7部署Canal与Canal集成使用
  • C语言--分段函数--switch语句
  • 动态规划31(Leetcode188买卖股票的最佳时机4)
  • npm包管理相关命令
  • 2023年Q3乳品行业数据分析(乳品市场未来发展趋势)
  • 软考 系统架构设计师系列知识点之边缘计算(2)
  • Maven中的继承与聚合
  • 第三章 UI开发的点点滴滴
  • 637. 二叉树的层平均值
  • 【Java笔试强训】Day9(CM72 另类加法、HJ91 走方格的方案数)
  • django REST框架- Django-ninja
  • 数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表
  • Web学习笔记-Vue3(环境配置、概念、整体布局设计)