猿问

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

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

我知道缓冲通道是线程安全的,但是我想知道它是否可以作为FIFO使用,特别是在并发情况下。

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


噜噜哒
浏览 365回答 3
3回答

一只斗牛犬

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

阿晨1998

在Go中,缓冲通道就是这样:一个线程安全的FIFO队列,因此您尝试执行的操作是完全有效的。使用这种方法,您根本不会遇到性能问题。

慕少森

通常,我要说的是缓冲通道不能构成良好的并发安全队列。创建它们会为整个缓冲区分配内存。如果执行期间队列大小从很小到很大,那么您就必须分配最坏的情况,这可能会浪费大量内存。
随时随地看视频慕课网APP

相关分类

Go
我要回答