建议阅读:14.2协程间的信道

问题:为什么代码1会报死锁的错误,而代码2不会报错?

代码1:

package mainimport ("fmt"
)func main() {ch := make(chan int)ch <- 1fmt.Println(<-ch) // 1

}

代码2:

package mainimport ("fmt"
)func main() {ch := make(chan int, 1)ch <- 1fmt.Println(<-ch) // 1

}

解答:

因为代码1的channel没有buffer,而代码2的channel设置了buffer为1。
没有buffer的channel只能通过另一个goroutine去读,否则就阻塞了。

可以理解成,代码1执行到 ch <- 1 时只有main一个“协程”(其实是线程),并没有其他协程进行接收 ch

转载于:https://www.cnblogs.com/wangchaowei/p/7794530.html

Go语言 channel 管道 阻塞 死锁 经典问题相关推荐

  1. Go语言的管道Channel用法

    本文实例讲述了Go语言的管道Channel用法.分享给大家供大家参考.具体分析如下: channel 是有类型的管道,可以用 channel 操作符 <- 对其发送或者接收值. ch <- ...

  2. 9、Go语言channel的操作

    "学习或者了解人工智能小伙伴福利来了,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家." 想了解或者学习人工智能可以看一下,我觉得学习起来挺有趣的 ...

  3. go语言channel学习与总结(一)channel的一些基本用法

    go语言中,说到并发先想到的就是goroutine,在go程序中,我们可以执行成千上万个goroutine协程,但是只是单纯的并发执行某个函数意义是不大的,既能够实现在函数与函数之间交换数据,又能使成 ...

  4. golang channel 管道 通道 信道 使用总结

    不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享: > Do not commun ...

  5. 专科 java转go 翱翔之路(二)基础语法:匿名组合,方法,接口,map,json,异常处理,channel管道,select用法

    2.4 面向对象编程 2.4.1匿名组合 type Person struct {id intname stringage int }type Student struct {Person //只有类 ...

  6. 【转】2.2[译]async/await中阻塞死锁

    这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的两篇博文中翻译过来. 原文1:Don'tBlock o ...

  7. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解

    问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...

  8. 背口诀14天精通c语言pdf下载,C语言必背18个经典程序

    C语言必背18个经典程序 1./*输出9*9口诀.共9行9列,i控制行,j控制列.*/ #include "stdio.h" main() {int i,j,result; for ...

  9. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...

  10. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

    阅读目录 概述: 一.事务 二.锁 三.阻塞 四.隔离级别 五.死锁 以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. ...

最新文章

  1. 他们创造了编程语言,他们是这个时代伟大的父亲
  2. Docker上部署WebERP系统,开源ERP框架
  3. python中数字类型与处理工具
  4. php 中c函数重载,php函数重载的替代方法--伪重载详解
  5. servlet和struts2一起使用,实现绝对路径下的图片输出到jsp页面
  6. Jquery 强大的表单验证操作
  7. SPSS正态性检验(图文+数据集)【SPSS 015期】
  8. 计算机屏幕截图按什么键,电脑按什么键自由截图
  9. [人工智能-综述-10]:模型评估 - 常见的模型评估指标与方法大全、汇总
  10. 三层交换机和二层交换机区别是什么
  11. pcd 地图转 栅格地图
  12. (附源码)spring boot校园购物网站 毕业设计041037
  13. abaqus各种文件说明
  14. 记录:Ubuntu20.04中安装和设置VScode
  15. 岁月温柔-7 妈妈的烦恼 蛋白粉涨价
  16. 信息系统项目管理师-项目资源管理
  17. 记一次个人服务器被nicehash挖矿,排查挖矿程序记录
  18. vs2017或vs2019或vs2022安装中Microsoft.VisualStudio.MinShell.Msi出错的问题
  19. win11怎么开启任务管理器?
  20. java实训心得感想30字_java实训心得体会范文

热门文章

  1. 快速线性筛法求素数一般筛法求素数代码
  2. erp服务器性能测试,浪潮PS-ERP压力测试报告--AMD单路服务器
  3. mysql mysqldb_mysql模块mysqldb
  4. 算法:求岛屿的数量200. Number of Islands
  5. 图数据库实战 AWS Neptune Gremlin CloudFormation
  6. java 遍历文件夹 性能_Java函数式编程(十一):遍历目录
  7. mysql手动编译安装_手动编译安装Mysql
  8. 聚类分析原理(及Python实现K-means代码详解)
  9. oracle多边形经纬范围筛选_Oracle数据库之Oracle spatial空间查询的选择度分析
  10. mysql 子查询 性能_mysql子查询性能