为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
噜噜哒 2021-04-27 17:22:00
我想找到一个队列结构(数据容器),其元素必须是先进先出的。对我来说重要的是,该结构必须是线程安全的。我将使用此数据容器作为任务或连接池之类的东西。我知道缓冲通道是线程安全的,但是我想知道它是否可以作为FIFO使用,特别是在并发情况下。而且,如果可以将缓冲通道用作线程安全队列,我是否需要担心其效率?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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


查看完整回答
反对 回复 2021-05-10
?
阿晨1998

TA贡献2037条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-05-10
?
慕少森

TA贡献2019条经验 获得超9个赞

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


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 364 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信