golang channel状态表
2024-08-27 13:24:50
如果我们查看该表,可以察觉到在操作中可能产生问题的地方。这里有三个可能导致阻塞的操作,以及三 个可能导致程序恐慌的操作。
乍看之下,通道的使用上限制很多,但在检查了这个限制产生的动机并熟悉 了通道的使用后,它变得不那么可怕并开始具有很大意义。
让我们讨论如何组织不同类型的通道来构筑稳 健的程序。 我们应该做的第一件事是将通道置于正确的环境中,即分配通道所有权。
我将所有权定义为goroutine的 实例化,写入和关闭。就像在那些没有垃圾回收的语言中使用内存一样,重要的是要明确哪个goroutine 拥有该通道,以便从逻辑上推理我们的程序。
单向通道声明是一种工具,它可以让我们区分哪些 gouroutine拥有通道,哪些goroutine仅使用通道:通道所有者对通道具有写入访问权(chan或chan<- ),而通道使用者仅具有读取权(<-chan)。
一旦我们对通道权责区分,上表的结果自然就会出现。
我 们可以开始对拥有通道和不拥有通道的goroutine赋予不同的责任并给予对应的检查(以增强程序和逻辑的 健壮性)。
最新文章
- MapReduce工作原理图文详解
- 63.Android面试题精选 (转)
- IUS
- pull方法解析xml
- Redis__WindowsServer主从服务部署及调用实例
- Activity not started, its current task has been brought to the front
- Windows 下 Nginx + PHP + Xdebug + PHPStorm 调试环境配置
- WSAEventSelect IO复用模型
- unity -- Time类(持续更新中)
- LeetCode - 661. Image Smoother
- Java中字符串indexof() 的使用方法
- .NETCore 下支持分表分库、读写分离的通用 Repository
- JMeter 压测基础(四)——Java工程测试
- Docker Swarm Mode 学习笔记(聊聊 replicas)
- Android Studio调试时遇见Install Repository and sync project的问题
- SAP SQVI 快速浏览器
- flask框架----基于flask的扩展实现的简单的页面登录
- Fedora防火墙配置
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Ibatis.Net 动态SQL语句学习(六)