使用Golang泛型構建的無鎖環形緩衝區開源專案

banq發表於2022-01-21

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

 

相關文章