Skip to main content

Go: concurrency pattern

📅 2026-03-14 ✏️ 2026-03-15 CS GO

1 · Go: concurrency pattern#

https://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN/view

Go 并发原语:goroutinechan

两个原则:

  • 当你需要并发工作的时候,使用goroutine
  • 通过通信共享内存

并发不是并行;并发也不是异步。 并发是一种程序结构,异步(同步)是等待结果(控制流)的方式。

异步回调是实现异步的一种方式,还有:Future/Promis 等

异步的直接作用不是制造并发,而是避免等待时浪费线程。这个特性会帮助程序更容易实现高并发。

1.1 · Future#

不是直接返回结果,而是返回一个代理对象,后续某个点,通过这个代理对象获取(可能阻塞)到结果

  • 在 Go 中,通过一个带1容量的缓存的chan:生产者计算出结果后,放入chan,然后结束,消费者通过chan拿到结果
  • 调用者调用基于Future的API时,先做准备工作,最后再获取结果;避免导致并发变成线形的(获取结果可能阻塞)

2 · links#

https://blogtitle.github.io/categories/concurrency

https://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN/view