使用 go 1.18beta 版本中的泛型的单生产者和多读者无锁环形缓冲区。与使用接口的环形缓冲区相比,它比具有泛型类型安全性的通道快得多。
使用 go 1.18. 我们能够以类型安全的方式在 go 例程之间传递序列化的结构。
环形缓冲区的很大一部分好处可以归因于底层数组是连续内存。
var buffer = CreateBuffer[int](10) messages := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} consumer, _ := buffer.CreateConsumer() for _, value := range messages { buffer.Write(value) } for _, _ = range messages { _ = consumer.Get() }