[LAD] memory allocation for the real time thread, opinions wanted

David Robillard d at drobilla.net
Tue Feb 28 01:49:21 UTC 2012


On Mon, 2012-02-27 at 20:01 -0500, Paul Coccoli wrote:
> On Mon, Feb 27, 2012 at 8:04 AM, Fons Adriaensen <fons at linuxaudio.org> wrote:
> > On Mon, Feb 27, 2012 at 09:59:19AM +0100, Nick Copeland wrote:
> >
> >> Both of these methods are affectively the same, what you are trying to do is provide
> >> a method that the low prio thread is responsible for both malloc and free.
> >
> > That's a nice method, it effectively uses the LFQ to 'send back' an item after
> > use by the recipient. It depends on the particular implementation of the queue,
> > you need one that allows to read one (or more if necessary) items without moving
> > the read pointer - that should be done only after the data has been used since
> > it signals that the data can be freed.
> >
> > The alternative is to make this explicit, by having two pairs of indices
> > operate on the same buffer:
> [SNIP]
> 
> Why not just use 2 ringbuffers: one to send pointers to the RT thread,
> and a second to send them back to the low prio thread (so it can free
> them).  You probably need a semaphore for the return ringbuffer, but
> that should be RT-safe.

This is exactly what I do in plugins (e.g. LV2 eg-sampler) to load
samples and such when the command to do so comes in the audio thread.
Works well.

-dr





More information about the Linux-audio-dev mailing list