网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 深入理解Go并发编程(从原理到实践看这本就够了)
分类
作者 晁岳攀
出版社 电子工业出版社
下载
简介
内容推荐
本书从标准库的并发原语讲起,循序渐进的介绍扩展库、分布式的并发原语、并发模式和经典并发问题。内容从并发原语的使用场景、使用方法、常见错误,内部实现多层次的讲解,全面的介绍Go并发的知识。全书分为三个部分,主要部分又分为四个层次。第一部分主要介绍Go标准库提供的各种并发类型(并发原语)的知识,方便初学Go语言的同学能够掌握好Go语言的基础能力,包括一些Go开发者都不熟悉的类型。第二部分属于拔高的内容,介绍积累优秀的扩展库,帮助Go开发者扩展思维,提高视野。这些扩展库如果能够掌握,在工作中会大有裨益。第三部分介绍分布式并发原语。这部分内容鲜有人介绍,但是属于互联网公司常用的一些场景,尤其是开发大型分布式项目。很多读者缺乏这方面的经验和机会,通过阅读此书,可以弥补这方面的知识的缺乏和实战的机会。
目录
第1章 Go并发编程和调度器
1.1 Go特别适合并发编程
1.2 并发 vs 并行
1.3 阿姆达尔定律:并发编程优化是有上限的
1.4 Go并发并不一定最快
1.5 Go运行时调度器
第2章 互斥锁 Mutex
2.1 竞争条件与数据竞争
2.2 Mutex的用法
2.2.1 一个并发问题
2.2.2 Mutex的使用
2.2.3 地道的用法
2.3 检查程序中的数据竞争
2.4 Mutex的历史实现
2.4.1 初始版本
2.4.2 多给新的 goroutine 一些机会
2.4.3 多给竞争者一些机会
2.4.4 解决饥饿问题
2.4.5 TryLock
2.5 Mutex的使用陷阱
2.5.1 误写
2.5.2 死锁
2.5.3 锁重入
2.5.4 复制锁
2.6 Mutex的扩展
2.6.1 可重入锁
2.6.2 支持并发 map
2.6.3 封装值
第3章 读写锁 RWMutex
3.1 读写锁的使用场景
3.2 读写锁的使用方法
3.3 读写锁的实现
3.3.1 RLock的实现
3.3.2 RUnlock的实现
3.3.3 Lock的实现
3.3.4 Unlock的实现
3.3.5 TryLock的实现
3.3.6 TryRLock的实现
3.4 读写锁的使用陷阱
3.4.1 锁重入
3.4.2 死锁
3.4.3 发现死锁
3.5 读写锁的扩展
第4章 任务编排好帮手 WaitGroup
4.1 WaitGroup的使用方法
4.2 WaitGroup的实现
4.3 WaitGroup的使用陷阱
4.3.1 Add 方法调用的时机不对
4.3.2 计数器的值为负数
4.3.3 错误的调用 Add的时机
4.3.4 知名项目中关于 WaitGroup 使用的 bug
4.4 WaitGroup的扩展
4.5 noCopy:辅助 vet 检查
第5章 条件变量 Cond
5.1 Cond的使用方法
5.2 Cond的实现
5.3 Cond的使用陷阱
5.3.1 调用 Wait 时没有加锁
5.3.2 唤醒之后不检查判断条件
5.4 在实际项目中使用 Cond的例子
第6章 单例化利器 Once
6.1 Once的使用方法
6.2 Once的实现
6.3 Once的使用陷阱
6.3.1 死锁
6.3.2 未初始化
第7章 并发 map
7.1 线程安全的 map
7.1.1 使用 map的两种常见错误
7.1.2 加读写锁:扩展 map,支持并发读/写
7.2 sync.Map的使用方法
7.3 sync.Map的实现
7.3.1 Swap 方法
7.3.2 Load 方法
7.3.3 Delete 方法
7.4 分片加锁:更高效的并发map
7.5 lock-free map
第8章 池 Pool
8.1 sync.Pool的使用方法
8.2 sync.Pool的实现
8.2.1 Get 方法的实现
8.2.2 Put 方法的实现
8.3 sync.Pool的使用陷阱
8.4 连接池
8.4.1 标准库中的 HTTP Client 池
8.4.2 数据库连接池
8.4.3 TCP 连 接池
8.4.4 Memcached Client 连接池
8.4.5 net/rpc 中的 Request/Response 对象池
8.5 goroutine/worker 池
第9章 不止是上下文:Context
9.1 Context的发展历史
9.2 Context的使用方法
9.2.1 基本用法
9.2.2 传递上下文
9.2.3 可撤销的上下文
9.2.4 带超时功能的上下文
9.3 Context 实战
9.4 Context的使用陷阱
9.5 Context的实现
9.5.1 WithValue的实现
9.5.2 WithCancel的实现
9.5.3 WithDeadline的实现
第10章 原子操作
10.1 原子操作的基础知识
10.2 原子操作的使用场景
10.3 atomic 提供的函数和类型
10.3.1 AddXXX 函数
10.3.2 CompareAndSwapXXX 函数
10.3.3 SwapXXX 函数
10.3.4 LoadXXX 函数
10.3.5 StoreXXX 函数
10.3.6 Value 类型
10.3.7 Bool、Int32、Int64、Pointer、Uint32、Uint64、Uintptr
10.4 uber-go/atomic 库
10.5 lock-free 队列的实现
10.6 原子性和可见性
第11章 channel 基础:另辟蹊径解决并发问题
11.1 channel的历史
11.2 channel的应用场景
11.3 channel的基本用法
11.4 channel的实现
11.4.1 channel的数据结构
11.4.2 初始化
11.4.3 发送数据
11.4.4 接收数据
11.4.5 关闭 channel
11.5 channel的使用陷阱\t/ 224
11.5.1 panic 和 goroutine 泄漏
11.5.2 知名项目踩过的坑
第12章 channel的内部实现和陷阱
12.1 使用反射操作 select 和 channel
12.2 channel的应用场景
第13章 Go内存模型
13.1 指令重排和可见性的问题
13.2 sequenced before、synchronized before 和 happens before
13.3 各种同步原语的同步保证
13.3.1 初始化
13.3.2 goroutine的运行
13.3.3 channel
13.3.4 锁(Mutex 和 RWMutex)
13.3.5 Once
13.3.6 WaitGroup
13.3.7 atomic操作
13.3.8 Finalizer、sync.Cond、sync.Map 和 sync.Pool
13.4 不正确的同步
第14章 信号量 Semaphore
14.1 什么是信号量
14.1
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/2/21 18:47:35