是否可以将Go的缓冲通道用作线程安全队列?

har*_*ass 16 queue channel go

我想找到一个队列结构(数据容器),其元素必须先进先出.对我来说重要的是结构必须是线程安全的.我将使用此数据容器作为任务或连接池.

我知道缓冲通道是线程安全的,但我不知道它是否作为FIFO工作,尤其是在并发情况下.

如果可以将缓冲通道用作线程安全队列,我是否需要担心其效率?

小智 11

在Go中,缓冲通道就是:一个线程安全的FIFO队列,所以你要做的就是完全有效.使用这种方法,您不应该遇到性能问题.


Jer*_*all 5

我很确定 Channels 是 FIFO 的。它们也很便宜,因此内存效率很高。除此之外,在不知道如何使用它们的细节的情况下,我们真的无法提供更多建议。