Meanwhile there's Christof's semaphor feature which promises to lower latency
(I tried doing this earlier in s_audio_pa.c but found it actually increased
latency; not sure what's going on here).

I guess you are talking about the THREADSIGNAL part (which has never been enabled, except for a very brief moment).

There are two major differences to my new implementation:

a) I use a semaphore instead of a condition variable to avoid unnecessary mutex locking.

b) The old THREADSIGNAL implementation would sleep on the condition variable as soon as the FIFO is empty/full. This would waste precious time that could be spent otherwise, in particular with larger hardware buffer sizes. In my implementation, on the other hand, I check the ringbuffer in a loop and only sleep on the semaphore when Pd is really idle, i.e. sched_idletask() has returned 0. See also https://github.com/pure-data/pure-data/pull/1756/commits/de8c62e0ce726634cba7570016a1b256eb724540.

Christof




_______________________________________________
Pd-dev mailing list
Pd-dev@lists.iem.at
https://lists.puredata.info/listinfo/pd-dev

Reply via email to