Multithreading strategy for audio plugins

Dear JUCE community,

I’ve written some dsp modules for audio visualisers (loudness metering, true peak, analyser, …). Some of them are also allocating data (!!) and I am sending data via InterprocessConnection to other clients over network.
Basically I’m only reading the audio buffers from the plugin’s audio processor but not modifying them. That’s why I want to reduce the work on the audio thread to a minimum (only copy the audio buffer to a lock free FIFO) and doing the rest on a separate thread.

I’m wondering what’s the best strategy for it.

  • Should I start one thread and run all modules on that thread or should I start a separate thread for every dsp module?
  • should every plugin instance start it’s own thread(s) or should I start a static TimeSliceThread for all plugin instances?
  • is there any special considerations for the different platforms (macOS, Windows), formats (AAX, VST, AU) and DAWs?

Thanks,
Stefan