Concurrency in Go中文笔记完整版.docxVIP

  • 1
  • 0
  • 约14.18万字
  • 约 256页
  • 2026-01-15 发布于中国
  • 举报

ConcurrencyinGo

中文笔记

目录

章节导读

在线资源

并发编程介绍

摩尔定律,可伸缩网络和我们所处的困境为什么并发编程如此困难

数据竞争原子性

内存访问同步

死锁,活锁和锁的饥饿问题死锁

活锁饥饿

并发安全性优雅的面对复杂性

代码建模:序列化交互处理并发与并行

什么是CSP

CSP在Go中的衍生物Go的并发哲学

Go的并发构建模块Goroutinessync包

WaitGroup

Mutex和RWMutexCond

OncePool

Channelsselect语句

GOMAXPROCS

结论

Go的并发编程范式访问范围约束fo-select循环

防止Goroutine泄漏

or-channel错误处理管道

构建管道的最佳实践

便利的生成器扇入扇出

or-done-channeltee-channelbridge-channel队列

context包

小结

可伸缩并发设计

错误传递超时和取消心跳

请求并发复制处理速率限制

Goroutines异常行为修复本章小结

Goroutines和Go运行时任务调度

章节导读

在我阅读技术书籍时,通常会跳到那些能够激起我兴趣的部分,或者,如果我试图提高新技术的效率,我会疯狂地剔除与当前工作直接相关的部分。无论你的使用初衷是什么,这里是本书的路线图,希望它能帮助你,引导你到需要的地方。

本章介绍了并发的历史,阐述并发是一个重要的概念,并讨论了一些使并发难以正确的基本问题。同时简要介绍了Go如何缓解这些负担。

如果你有相关的知识,或者只是想了解如何使用Go的并发原语技术,可以跳过本章。

本章介绍了Go的设计的一些初衷。这将有助于为你提供与Go社区中其他人交谈的背景信息,并帮助你了解为什么代码会按照的这样那样的思考方式运行。

Go

这一章我们将开始深入研究Go并发原语的语法。还会介绍标准库中的sync包,它负责处理Go的内存访问同步。如果你之前没有在Go中使用过并发,但希望立即了解正式内容,那么这里就是开始的地方。

在Go中编写并发代码的所需基础知识很少,在这里主要是将Go的概念与其他语言和并发模型进行比较。严格地说,没有必要理解这些东西,但这些概念可以帮助你全面了解Go语言的并发特性。

Go

在本章中,我们将着眼于如何把Go的并发原语组合在一起来形成有用的模式。这些模式既可以帮助我们解决问题,也可以避免在使用中常见的错误。

如果你已经使用Go编写了一些并发代码,本章仍然是有用的。

在本章中,我们将学习过的模式组合成更大的程序,展示服务和分布式系统中常用的经验。

GoroutinesGo

本章介绍Go运行时如何处理调度goroutines。这对于那些想了解Go的运行时内部机制的人来说会很有意思。附录

附录列举了各种工具和命令,可以帮助你更轻松地编写和调试并发程序。

所有示例皆运行于main函数下,译者程序基于go1.10.1运行于windows7系统下,且全部验证无误

在线资源

在线资源

Go有一个非常活跃和热情的社区!对于那些喜欢Go的人来说,很容易找到友善,乐于帮助的人。以下是我最喜欢的面向社区阅读资料,去获取帮助和同伴之间的互动吧:

\h/\h/play\h/go\h/go\h/golang/go/wiki

并发编程介绍

并发编程介绍

并发是一个有趣的词,因为它对编程领域中的不同人员意味着不同的事情。除了”并发”之外,你可能听说过”异步”,”并行”或”线程化”等字眼。有些人认为这些词意思相同,而其他人则非常特别地在每个词之间划定界限。既然我们整本书都会讨论并发,那么首先花一些时间讨论我们说”并发”时指代的含义是非常重要的。

我们将在第2章花费一些时间讨论并发原理,但现在让我们采用一个实际的定义,作为我们理解的基础。

当大多数人使用“并发”这个词时,他们通常指的是与一个或多个进程同时发生的进程。通常也暗示所有这些进程都在同一时间取得进展。在这个定义下,一个简单的方法来思考这个问题是——人。你正在阅读这篇文章,而世界上的其他人则同时过着自己的生活。它们与你同时存在。

并发是计算机科学中的一个广泛话题,从这个定义中可以得出各种各样的主题:理论,并发建模方法,逻辑正确性,实际问题甚至理论物理。我们将在本书中涉及一些辅助话题,但我们主要将坚持涉及Go内容中涉及并发的部分,具体为:Go如何选择对并发进行建模,由此产生哪些问题和模型,以及我们如何在这个模

文档评论(0)

1亿VIP精品文档

相关文档