[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