如果我们查看该表,可以察觉到在操作中可能产生问题的地方。这里有三个可能导致阻塞的操作,以及三 个可能导致程序恐慌的操作。

乍看之下,通道的使用上限制很多,但在检查了这个限制产生的动机并熟悉 了通道的使用后,它变得不那么可怕并开始具有很大意义。

让我们讨论如何组织不同类型的通道来构筑稳 健的程序。 我们应该做的第一件事是将通道置于正确的环境中,即分配通道所有权。

我将所有权定义为goroutine的 实例化,写入和关闭。就像在那些没有垃圾回收的语言中使用内存一样,重要的是要明确哪个goroutine 拥有该通道,以便从逻辑上推理我们的程序。

单向通道声明是一种工具,它可以让我们区分哪些 gouroutine拥有通道,哪些goroutine仅使用通道:通道所有者对通道具有写入访问权(chan或chan<- ),而通道使用者仅具有读取权(<-chan)。

一旦我们对通道权责区分,上表的结果自然就会出现。

我 们可以开始对拥有通道和不拥有通道的goroutine赋予不同的责任并给予对应的检查(以增强程序和逻辑的 健壮性)。

最新文章

  1. MapReduce工作原理图文详解
  2. 63.Android面试题精选 (转)
  3. IUS
  4. pull方法解析xml
  5. Redis__WindowsServer主从服务部署及调用实例
  6. Activity not started, its current task has been brought to the front
  7. Windows 下 Nginx + PHP + Xdebug + PHPStorm 调试环境配置
  8. WSAEventSelect IO复用模型
  9. unity -- Time类(持续更新中)
  10. LeetCode - 661. Image Smoother
  11. Java中字符串indexof() 的使用方法
  12. .NETCore 下支持分表分库、读写分离的通用 Repository
  13. JMeter 压测基础(四)——Java工程测试
  14. Docker Swarm Mode 学习笔记(聊聊 replicas)
  15. Android Studio调试时遇见Install Repository and sync project的问题
  16. SAP SQVI 快速浏览器
  17. flask框架----基于flask的扩展实现的简单的页面登录
  18. Fedora防火墙配置
  19. 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
  20. Ibatis.Net 动态SQL语句学习(六)

热门文章

  1. 无人驾驶技术之Kalman Filter原理介绍
  2. Python 并行分布式框架:Celery 超详细介绍
  3. Java中的抽象类abstract
  4. 福大软工1816:Beta(7/7)
  5. 开发环境解决 kafka Failed to send messages after 3 tries
  6. vim 简单用法
  7. PAT 甲级 1023 Have Fun with Numbers
  8. 【Nginx】均衡负载权重模式实现session数据同步
  9. javascript之彻底理解valueOf, toString
  10. PHP面向对象之抽象类,抽象方法