深入理解Go并发编程:从原理到实践,看这本就够了
出版时间:
2023-11
版次:
1
ISBN:
9787121466465
定价:
158.00
装帧:
其他
开本:
16开
页数:
416页
字数:
589千字
3人买过
-
本书分为四大部分。第1部分包括第1~13章,主要介绍Go标准库的同步原语,包括互斥锁Mutex、读写锁RWMutex、WaitGroup、条件变量Cond、Once、Map、Pool、Context、channel等,以及近期新的原子操作知识,其中重点介绍了channel,最后还介绍了Go的内存模 型。第2部分包括第14~18章,主要介绍Go官方的扩展库和第三方的同步原语,包括信号量、SingleFlight、CyclicBarrier、分组操作库、限流库等。第3部分包括第19章,主要介绍基于etcd的分布式同步(并发)原语。第4部分包括第20章和第21章,主要归纳总结Go的并发模式,并尝试使用本书介绍的同步原语解决经典的并发问题。
本书主要面向的是已经具有Go软件编程开发经验的工程师、基础架构软件开发工程师和架构师,需要初步和深入了解Go并发编程的相关知识,设计和实现高并发的基础软件与分布式系统的专业人员,以及对Go并发感兴趣的读者。
晁岳攀(@鸟窝),rpcx微服务框架作者,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 连接池
……
-
内容简介:
本书分为四大部分。第1部分包括第1~13章,主要介绍Go标准库的同步原语,包括互斥锁Mutex、读写锁RWMutex、WaitGroup、条件变量Cond、Once、Map、Pool、Context、channel等,以及近期新的原子操作知识,其中重点介绍了channel,最后还介绍了Go的内存模 型。第2部分包括第14~18章,主要介绍Go官方的扩展库和第三方的同步原语,包括信号量、SingleFlight、CyclicBarrier、分组操作库、限流库等。第3部分包括第19章,主要介绍基于etcd的分布式同步(并发)原语。第4部分包括第20章和第21章,主要归纳总结Go的并发模式,并尝试使用本书介绍的同步原语解决经典的并发问题。
本书主要面向的是已经具有Go软件编程开发经验的工程师、基础架构软件开发工程师和架构师,需要初步和深入了解Go并发编程的相关知识,设计和实现高并发的基础软件与分布式系统的专业人员,以及对Go并发感兴趣的读者。
-
作者简介:
晁岳攀(@鸟窝),rpcx微服务框架作者,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 连接池
……
查看详情
-
全新
广东省广州市
平均发货18小时
成功完成率95.08%
-
全新
广东省广州市
平均发货18小时
成功完成率95.57%
-
全新
-
全新
广东省广州市
平均发货18小时
成功完成率95.69%
-
全新
广东省广州市
平均发货18小时
成功完成率95.79%
-
全新
-
全新
北京市通州区
平均发货10小时
成功完成率83.89%
-
全新
河北省保定市
平均发货17小时
成功完成率92.77%
-
全新
河北省保定市
平均发货21小时
成功完成率75.03%
-
全新
河北省保定市
平均发货21小时
成功完成率75.03%
-
全新
河北省保定市
平均发货21小时
成功完成率75.03%
-
全新
河北省保定市
平均发货26小时
成功完成率83.17%
-
全新
河北省保定市
平均发货17小时
成功完成率92.77%
-
全新
江苏省无锡市
平均发货10小时
成功完成率88.28%
-
全新
天津市东丽区
平均发货15小时
成功完成率89.29%
-
全新
湖北省武汉市
平均发货17小时
成功完成率92.16%
-
全新
广东省广州市
平均发货17小时
成功完成率95.31%
-
全新
河北省廊坊市
平均发货17小时
成功完成率92.99%
-
全新
天津市东丽区
平均发货15小时
成功完成率89.29%
-
全新
河北省保定市
平均发货18小时
成功完成率78.52%
-
全新
河北省保定市
平均发货18小时
成功完成率88.17%
-
全新
河北省保定市
平均发货18小时
成功完成率88.17%
-
九五品
北京市海淀区
平均发货43小时
成功完成率40.54%
-
全新
北京市朝阳区
平均发货14小时
成功完成率77.12%
-
全新
广东省广州市
24小时内发货
成功完成率93.29%
-
全新
北京市朝阳区
平均发货17小时
成功完成率92.5%
-
全新
湖北省武汉市
平均发货16小时
成功完成率77.96%
-
全新
北京市房山区
平均发货26小时
成功完成率76.88%
-
全新
北京市朝阳区
平均发货17小时
成功完成率93.82%
-
九五品
北京市丰台区
平均发货22小时
成功完成率71.63%
-
全新
北京市房山区
平均发货21小时
成功完成率73.08%
-
全新
河北省保定市
平均发货18小时
成功完成率88.17%
-
全新
北京市朝阳区
平均发货18小时
成功完成率93.37%
-
全新
河北省保定市
平均发货18小时
成功完成率88.17%
-
深入理解Go并发编程
①全新正版,现货速发,7天无理由退换货②天津、成都、无锡、广东等多仓就近发货,订单最迟48小时内发出③无法指定快递④可开电子发票,不清楚的请咨询客服。
全新
湖北省武汉市
平均发货18小时
成功完成率92.07%
-
全新
河北省保定市
平均发货29小时
成功完成率80.57%
-
全新
-
全新
北京市朝阳区
平均发货18小时
成功完成率93.37%
-
全新
河北省保定市
平均发货25小时
成功完成率91.89%
-
全新
江苏省无锡市
平均发货11小时
成功完成率95.17%
-
全新
江苏省无锡市
平均发货18小时
成功完成率89.06%
-
全新
北京市西城区
平均发货19小时
成功完成率82.67%
-
4
全新
北京市丰台区
平均发货25小时
成功完成率87.03%
-
全新
江苏省南京市
平均发货10小时
成功完成率90.41%
-
全新
湖北省武汉市
平均发货17小时
成功完成率91.67%
-
全新
江苏省无锡市
平均发货6小时
成功完成率96.02%
-
全新
江苏省无锡市
平均发货10小时
成功完成率90.41%
-
全新
天津市和平区
平均发货29小时
成功完成率81.86%
-
全新
河北省保定市
平均发货30小时
成功完成率81.5%
-
全新
河北省保定市
平均发货29小时
成功完成率80.57%