A thread-safe non-allocating circular RingBuffer type
8 Stars
Updated Last
2 Years Ago
Started In
March 2016


Build Status Build status codecov.io

This package provides the RingBuffer type, which is a circular, fixed-size multi-channel buffer.

This package implements read, read!, and write methods on the RingBuffer type, and supports reading and writing NxM AbstractArray subtypes, where N is the channel count and M is the length in frames. It also supports reading and writing from AbstractVectors, in which case the memory is treated as a raw buffer with interleaved data.

Under the hood this package uses the pa_ringbuffer C implementation from PortAudio, which is a lock-free single-reader single-writer ringbuffer. The benefit of building on this is that you can write C modules for other libraries that can communicate with Julia over this lock-free ringbuffer using the portaudio.h header file. See the PortAudio library for an example of using this to pass data between Julia's main thread and an audio callback in a different thread.

Used By Packages

No packages found.