03. 并发编程
Go 并发编程
作为
Do not communicate by sharing memory; instead, share memory by communicating.
Go 的并发哲学

- 你想转移数据的所有权吗?
如果你有一些代码能够产生结果,并希望与另一部分代码共享这个结果,那么你真正在做的是转移那些数据的所有权。如果你熟悉不支持垃圾回收的语言的内存所有权概念,那么也可以称之为:数据所有者,使并发程序安全的一种方法是确保只有一个并发上下文拥有数据的所有权 。通道可以帮助我们来传达这一概念。
这样做的一大好处是你可以创建缓冲通道来实现资源廉价的内存队列,从而将你的生产者与消费者分离。另一个是通过使用通道,你可以隐式地将你的并发代码与其他并发代码组合在一起。
- 你是否试图保护结构的内部状态?
这是内存访问同步原语的一个很好的选择,也是一个非常强大的指示器,你不应该使用通道。通过使用内存访问同步原语,你可以隐藏从呼叫者锁定关键部分的实现细节,但不会给调用者带来复杂性。这是一个线程安全类型的小例子:
Links
2017-Concurrency in Go 中文笔记》📚: 以希望大家能够了解并掌握有关Go 中并发性的高质量、全面的信息:如何使用它,如何将最佳实践和模式整合到系统中,以及它们如何在所有系统中运行。我尽力在这些考量之间取得平衡。TODO!