I’m writing OFX plugins for Natron (on Linux) that use MultiThread and just noticed that the last thread seems to only be spawned after the first one has finished. Let’s say if nThreads is 8, threads with ID 0 - 6 start running, but not thread #7 yet. Only after one of 0 - 6 has finished, thread 7 start running.
This happens only when the “Max threads usable per effect” preference is set to the number of cores available on the system (or to 0=guess which results in the same).
I reckon Natron reserves one core for the user interface to stay responsive which isn’t probably a bad idea. But then that last thread shouldn’t be offered to the plugin for rendering and then held back.