I'm embarking on a C# project where certain tasks will be divvied up and run on multiple threads. I'm looking for as many good tools as possible to help make sure I'm running as efficiently as possible. So I want to watch for things like resource (CPU) usage, blocking, deadlocks, threads that are waiting for work, and so on. I want to be able to compare different approaches to see what works best under different conditions.
I'm also looking to learn what Perfmon counters are more or less useful for trying to optimize and compare threading models.
I also can't afford to purchase anything too expensive, so the free-er the better.
This is a C# project on .NET 3.5, with VS 2008 (though I could use the VS 2010 beta if it offered more help for threading, which I've heard it does).
Thanks.
EDIT: I'm definitely looking for Perfmon recommendations, as well as any other tool that I can also use when I want to monitor the app in a production environment. So, debugging tools are needed, but I also want tools for non-debug environments. Thx.
FURTHER EDIT: Here are a few useful links I've found since I asked the question:
- Tools And Techniques to Identify Concurrency Issues (MSDN Magazine Article)
- PerfMon - Your debugging buddy (important counters for .NET debugging, including threading related counters)