SONOFA$#*&! I keep posting from the wrong email address and getting bounced ;-) Sorry to Henry & IOhannes for the dupes...
In the context of threading/part. conv, I had an idea to compute ahead. Most of the calculations for a given block can be computed ahead. Only the most recent block of samples needs to be actually convolved, right away.
Then, once you've summed the most recent block with the other partitions, you'd start a thread to "compute ahead" the next cycle's partitions. If the load is low enough, it would complete by the next cycle--of course, you'd need to wait/join the background thread to make sure that it completes.
that's what it does, give or take :-)
thread is signalled to wake up, it does the block next due. 2) The main thread pre-empts worker threads as soon as its called. Worker threads check constantly for a signal to suspend their current task, and hand the unfinished work back to the main thread. 3) If the main thread needs a block that hasn't been completed, it has to work on it -> usually this means you aren't going to make your schedule and the CPU is maxxed out.
-Seth