何时关闭通道:

第一,只有在后面要检查通道是否关闭的时候才需要显式地关闭通道;

第二,应该由发送端的goroutine关闭通道,而不是由接收端的goroutine来完成;

第三,如果通道并不需要检查是否被关闭,那么不关闭这些通道并没有什么问题,因为通道非常轻量,因此它不会像打开文件不关闭那样耗尽系统资源。

两个陷阱:

1、程序完成时我们没得到任何结果

因为主gorouting退出后,其他的工作goroutine也会退出,所以必须保证所有工作goroutine都完成后才让主goroutine退出。

2、死锁

有两种情况下可能发生死锁:

第一种是即使所有的工作都已经完成了,但是主goroutine和工作goroutine还存活,这种情况通常是由于工作完成了但是主goroutine无法获得工作goroutine的完成状态。

第二种是当两个不同的goroutine都锁定了受保护的资源而且同时尝试去获得对方资源的时候,一般在使用锁的时候才会出现。

最新文章

  1. TFS 2015(Visual Studio Team Foundation Server)的下载和安装
  2. SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298
  3. UI: 窗口全屏, 窗口尺寸
  4. Day11 Memcached、Redis和RabbitMQ安装
  5. CMStepCounter Class Refernce
  6. TCP/IP卷一没提到的策略路由
  7. nginx 安装php
  8. ArcGIS消除图斑重叠错误
  9. 封装selenium自动化框架中的截图功能
  10. POI 读取 excel
  11. 项目:《JavaWeb图书管理系统视频》--代码修复还可以运行起来
  12. Learning-Python【25】:绑定方法与非绑定方法
  13. 1. Spring基于xml加载和读取properties文件配置
  14. 常用gcc选项
  15. 【ARTS】01_12_左耳听风-20190128~20190203
  16. 小程序 openid 的原始请求和网络请求
  17. 【转】【C++】__stdcall、__cdcel和__fastcall三者的区别
  18. mysql 8.0 初识
  19. string、char *的转换
  20. 超简单让ubuntu开启wifi热点(亲测16.04与14.04可用)

热门文章

  1. nginx学习资源
  2. mysql复制原理与机制一
  3. innodb事务日志详解
  4. xml处理模块
  5. 去掉字符串中的html标签
  6. Mycat实战之配置EP分片
  7. 从官网下载jdk1.6 1.7
  8. 简单的so修改
  9. textarea标签提示录入剩余字数
  10. layer使用总结一配置