[Ardour-Dev] parallel route processing...

torbenh torbenh at gmx.de
Wed Apr 14 17:45:16 PDT 2010


hi...

the 3.0P does parallel processing of Routes.
currently only using 2 threads.
but its just a matter of creating more threads.

i wrote the data-flow stuff out of tree, and paul was talking
about an all threads are equal scheme. so i complied ;)

basically any of the processing threads can notice at some point that
the graph is completetely processed.

paul already switched a3 to the jack "wait" API. 

we basically have a loop of:

while(1)
{
  do_somthing_pre_routes()
  process_routes()
  do_somthing_post_routes()
}

the problem is due to the multithreaded nature,
process_routes() doesnt have a single thread which
is alive when the graph is finished.

my argumentation now is that since do_somthing_pre_routes()
and do_somthing_post_routes() is single threaded.

this is the stuff that needs to be a function called by the thread
that finished the graph processing.

this turns things a bit upside down.

(currently process_routes() is just a stub which wakes up the
processing, and blocks on a semaphore until its done)



i dont really think that turning things upside down is so much work.
the bigger problem is that Session::process() would be running as one
the RT threads. so the necessary tls resources need to be shared.


oh... and the code needs some nitpicking by drobilla :)


-- 
torben Hohn



More information about the Ardour-Dev mailing list