I'm writing a multithreaded C#/.Net application to control an industrial process. There are many compute-intensive tasks that need to be performed and many of them could be done in parallel with very little contention for shared objects. So this is a good opportunity to spawn multiple threads to improve performance.
How do I measure/monitor/test thread load performance to ensure that I'm balancing the work optimally among all the threads I create, so all the threads are fully utilizing the maximum time-slice they get from the scheduler and they don't spend much time stopped or waiting?
FWIW I'm using VS2010 Professional edition