使用Golang泛型构建的无锁环形缓冲区开源项目


使用 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()
}