Thanks for your answer! Does the OS typically schedule the threads evenly, or does it leave much to be desired?
The reason for my question is that I have some very CPU-intensive kontakt instruments. I am considering running each instrument in a separate VE instance to try and "force" the OS to schedule each to a different CPU core.
Most of the time, the OS is really very good at scheduling threads. As long as you (as a developer) try to keep a sane threading model in your application - you can usually trust the OS to do the proper scheduling, as long as you have thread priorities set correctly. There are of course times when thread context switching can cause performance losses, but to my experience - the OS scheduler is remarkably good and quick. I suppose you are using Kontakt in a sequencer host today, I would recommend to have the sequencer handling any threading or affinity.
When it comes to threading in audio applications, and mixers in aprticular - there are several things to consider. At one or several points the threads need to be syncronized, for submixing, bussing, sends etc, and this can create some issues if it is not done properly. I know some people, running multiple audio input objects in Logic, are having quite some issues with most of processing plugins ending up on the same mixer thread, overloading even an 8-core machine with only a few plugins.
Thanks again for your answer!
As you have imagined, I'm running kontakt in Logic Pro 8. To my amazement, Logic frequently runs many Kontakt instances all on one CPU core, while other cores idle. So, I am stuck using PC servers for the moment.
It is my hope that VE Pro will be a way to force each Kontakt instance onto a different core, but still be able to mix inside logic -- so I can get rid of my servers and run everything on my mac pro.
Do you think my hopes are reasonable?