![]()
内容推荐 本书详细阐述了与Go语言并发技术相关的基本知识,主要包括并发——高级概述、Go并发原语、Go内存模型、一些众所周知的并发问题、工作池和管道、错误和恐慌处理、Timer和Ticker、并发处理请求、原子内存操作、解决并发问题等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。 目录 第1章 并发——高级概述 1.1 技术要求 1.2 并发和并行 1.3 共享内存与消息传递 1.3.1 共享内存 1.3.2 消息传递 1.4 原子性、竞争、死锁和饥饿 1.4.1 竞争 1.4.2 原子性 1.4.3 死锁 1.4.4 饥饿 1.5 程序的属性 1.6 小结 1.7 思考题 1.8 延伸阅读 第2章 Go并发原语 2.1 技术要求 2.2 goroutine基础知识 2.2.1 进程 2.2.2 线程 2.2.3 调度程序 2.2.4 goroutine 2.2.5 线程和goroutine之间的区别 2.2.6 goroutine的运行研究 2.2.7 闭包 2.2.8 停止正在运行的goroutine 2.2.9 Go运行时管理goroutine的方式 2.3 通道和select语句 2.3.1 声明通道 2.3.2 发送和接收值 2.3.3 通道的初始化和关闭 2.3.4 无缓冲通道 2.3.5 使用单向通道 2.3.6 使用多个goroutine和通道协调工作 2.3.7 select语句 2.4 互斥体 2.5 等待组 2.6 条件变量 2.7 小结 2.8 思考题 第3章 Go内存模型 3.1 关于内存模型 3.2 内存操作之间的happened-before关系 3.3 Go并发原语的同步特性 3.3.1 包初始化 3.3.2 goroutine 3.3.3 通道 3.3.4 互斥体 3.3.5 原子内存操作 3.3.6 Map、Once和WaitGroup 3.4 小结 3.5 延伸阅读 第4章 一些众所周知的并发问题 4.1 技术要求 4.2 生产者-消费者问题 4.3 哲学家就餐问题 4.4 速率限制 4.5 小结 第5章 工作池和管道 5.1 技术要求 5.2 工作池 5.3 管道、扇出和扇入 5.3.1 简单管道示例 5.3.2 同步管道 5.3.3 异步管道 5.3.4 扇出/扇入 5.3.5 有序扇入 5.4 小结 5.5 思考题 第6章 错误和恐慌处理 6.1 错误处理机制 6.1.1 常见错误处理模式 6.1.2 常见错误处理模式的变体 6.1.3 管道 6.1.4 服务器 6.2 恐慌 6.3 小结 第7章 Timer和Ticker 7.1 技术要求 7.2 Timer——稍后运行一些东西 7.3 Ticker——定期运行一些东西 7.4 心跳 7.5 小结 第8章 并发处理请求 8.1 技术要求 8.2 上下文、取消和超时 8.2.1 上下文 8.2.2 取消 8.2.3 超时 8.2.4 处理上下文中的值 8.3 后端服务 8.3.1 构建一个简单的TCP服务器 8.3.2 容器化后端服务 8.3.3 构建一个简单的HTTP服务 8.3.4 分配工作和收集结果 8.3.5 信号量——限制并发 8.4 流传输数据 8.4.1 构建一个流传输应用程序 8.4.2 处理多个流 8.5 小结 第9章 原子内存操作 9.1 技术要求 9.2 原子内存操作的内存保证 9.3 比较和交换操作 9.4 原子的实际用途 9.4.1 计数器 9.4.2 心跳和进度表 9.4.3 取消 9.4.4 检测变化 9.5 小结 第10章 解决并发问题 10.1 技术要求 10.2 解读堆栈跟踪信息 10.2.1 哲学家进餐程序的死锁问题 10.2.2 链表指针问题 10.3 检测故障并修复 10.3.1 正确认识失败 10.3.2 找出失败的原因 10.3.3 尝试从失败中恢复 10.4 调试异常 10.5 小结 10.6 延伸阅读 |