title: Profiling .net multithreaded application (Visual Studio 2008)
body: <p>I recently installed (the eval of) Visual Studio 2008 TS in order to be able to get some profiling of an application done. Now I only find out how little I know about (real world) profiling, when applications are more complex than "Hello World".</p>
  
  <p>My main problem is that the integrated debugger seems to add the time spent by all threads, so I get several times the total runtime, also certain functions (like sleep) show up several times, I assume since they are called by several threads.</p>
  
  <p>Now my problem is: how can I make this easier to examine? There is only one thread I am interested in (the main one doing all the work), the others are simply waiting for certain stuff and are totally limited by the running time of my main thread. (They are in the same modules though and sometimes call the same functions.)</p>
  
  <p>Is there any way to setup the profiling? Any way to handle the results in order to make them more meaningful for my scenario? Any other solution than VS 2008 (like 2010 or an external profiler)?</p>
  
  <p>I am using instrumentation right now (gave me better results than sampling in my view) with C# under .net 3.5.</p>