[linux-audio-dev] Multithreaded programming for a poll model?
Chris Cannam
cannam at all-day-breakfast.com
Thu Jun 17 19:26:51 UTC 2004
On Thursday 17 Jun 2004 7:08 pm, Mario Lang wrote:
> I think for this to work, I'd need some
> prebuffering in between, and the audio thread somehow singaling to
> the decoder thread when the buffer is too empty to safely continue
> sleeping so that the decoder can start to fill more data into the
> buffer.
One way to do this is to use pthread conditions. Have a ring buffer
between your decoder and RT threads, with the decoder sleeping for
short periods of time between reads using pthread_cond_timedwait or
similar. This causes the thread to sleep until a certain time has
elapsed or a condition has been signalled. You can then signal from
the RT thread using pthread_cond_signal to wake up the decoder thread
each time something is read from the ring buffer.
This is pretty much what we're doing in Rosegarden 0.9.8, but now that
I describe it, I realise I don't know for absolutely sure whether
pthread_cond_signal is itself RT-safe. More information or better
alternatives are welcome.
Chris
More information about the Linux-audio-dev
mailing list