Golang 派发相同的数据去例程

Golang dispatch same data to go routins

有一个生成数据的例程。还有许多处理 http 响应的 go 例程。我希望将生成的数据传递给所有 http 处理程序例程。所有发送的数据都是一样的。 我想到了两个解决方案。使用通道管道扇出或使用互斥锁和条件变量。 我担心以前的方式是否需要内存分配才能将数据放入通道。

我应该选择什么?

您的用例听起来像是从渠道中获益。通常,当需要在 go 例程之间进行通信时,通道是首选。听起来像是 worker pool.

的经典例子

互斥量用于保护一块内存,因此一次只能有 1 个 goroutine access/modify。通常这与人们想要的相反,即并行执行。

一个好的经验法则是在优化(内存分配与否)真正成为问题之前不要担心。过早优化是一种常见的反模式。