Thanks guys, that's very helpful. I'll no doubt have further questions once I get to prototyping that part. Paul, if you could let me know where to look for examples in the ardour code that would be cool too.

thanks
iain

On Wed, Nov 2, 2011 at 10:45 AM, Jeff Koftinoff <jeffk@jdkoftinoff.com> wrote:
A good starting point for reading is on Software Transactional Memory (STM):
       http://en.wikipedia.org/wiki/Software_transactional_memory

Jeff

On 2011-11-02, at 10:40 AM, Paul Davis wrote:

> On Wed, Nov 2, 2011 at 1:34 PM, Iain Duncan <iainduncanlists@gmail.com> wrote:
>
>> Does that sound more feasible? BTW, excuse my ignorance, but what is RCU?
>
> Yes, that's certainly feasible. RCU = Read-Copy-Update is a software
> pattern for dealing with situations where you need to update a complex
> data structure while it is in use. The general approach is to make a
> copy, modify the copy, and the atomically (normally) swap a pointer to
> the original for a pointer to the new one. somehow you have to clean
> up the old one.
>
> you won't find this written up in any texts on programming, i think.
> its in wide use in the linux kernel, and there have been attempts to
> create some general purpose user space libraries that do it too. my
> own sense is that almost every implementation of RCU will end up being
> incredibly context (app) dependent. we use it a lot in ardour. its
> quite complex.
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev@lists.linuxaudio.org
> http://lists.linuxaudio.org/listinfo/linux-audio-dev