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

我知道缓冲通道是线程安全的,但我想知道它是否像FIFO一样工作,特别是在并发情况下.

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

推荐答案

我很确定这些频道是先进先出的.它们也很便宜,因此可以节省内存.除此之外,如果不知道你将如何使用它们的细节,我们真的不能给你更多的建议.

Go相关问答推荐

迭代项列表时如何超时并发调用

按键值排序字符串- Golang

有没有办法通过Go cmdline或IDE(IntelliJ)找出我的 struct 实现了什么接口?

如何使用GO GIN从Auth0 JWT内标识检索权限

在Golang中Mergesort的递归/并行实现中出现死锁

文件路径.Abs()未在结果中提供子目录

迭代字符串并用映射值替换原始字符串中的值的惯用方法

日志(log)文件不在 golang 的日志(log)目录中

为什么 Go 对于长度为 100k 的切片使用的内存比长度为 100k 的数组要少?

正则表达式模式,确保至少一个字符与其他条件一起存在

将字符串格式的x509证书生成主题名称

Global Thread-local Storage 在 Go 中的可行性和最佳实践

缺少签名帮助文档

Go Colly 如何找到请求的元素?

如何使用带有方法的字符串枚举作为通用参数?

Dockerfile 问题 - 为什么找不到二进制 dlv - 没有这样的文件或目录

如何在 golang 中同时加载 .env 文件和 os 环境变量

如何在 Windows 上使用 cgo 为 386 arch 构建 lib?

如何使用 context.WithCancel 启动和停止每个会话的心跳?

如何访问Go 1.18泛型 struct (structs)中的共享字段