Skip to content

jtarchie/ringbuffer

Repository files navigation

Ring Buffer

This is a library for ring buffer operations in Go. A ring buffer, also known as a circular buffer, is a fixed-size data structure that overwrites the oldest data when it becomes full. You can learn more about ring buffers on Wikipedia. The primary goal of this library is to provide a buffer that favors more recent data and prevents back pressure on the buffer.

Channel

This implementation uses Go channels as the underlying buffer. You can define the size and type of the buffer.

Example:

buffer := ringbuffer.NewChannel[int](1)
buffer.Write(1)
buffer.Write(2)

// in a goroutine far away
value := buffer.Read()
// value == 2

Limitations

This library does not currently support:

  • Emitting metrics when data is dropped
  • Timeout/context for a buffer

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages