The proliferation of multi-core processors means developers are being dragged into a multi-threaded world. For applications to take advantage of the newest processors, which today are 2 and 4 cores, but tomorrow will be 8 & 16 cores, developers need to know how to write multi-threaded code.
Multi-threaded development, along with Asynchronous Programming, is considered by most developers to be mysterious and difficult topic. In this presentation, I cover the pros and cons of multi-threaded development with .Net, and review the common mistakes people make. Topics covered will include:
When & how to use the System Thread Pool
When & how to use Asynchronous I/O
Creating and managing your own threads
Synchronization and locking techniques
Techniques for debugging multi-threaded code
Some of the areas covered in detail will be Interlocked Methods and Volatile variables, Monitors and Events, the ReaderWriter lock, and the relevant differences between x86, x64 and IA64.
Time permitting, I'll also show how to tune multi-threaded applications using the various .Net Profilers on the market, and play "find the deadlock" for prizes.
Chris Mullins is a C# Microsoft Valuable Professional (MVP) and the Chief Software Architect at Coversant. He mentors development teams in .NET programming and is a sought-after speaker for his insights into programming and application architecture. Software designed by Chris runs in over 5 million U.S. households, has been battlefield deployed, and is used by a number of government agencies, divisions of the U.S. Military, and private sector companies around the world. Chris authors an advanced .NET blog at: www.coversant.com/blogs/
Official Website: http://sacvsug.org/Default.aspx?tabid=675
Added by cmullins on August 2, 2007
cmullins
I've given this presentation a number of times now, and to an audience ranging from "What's a thread?" to "That's likely to cause branch mispredictions".
Each time I've given this presentation, it's gone over quite well and received excellent reviews. Users from novice to expert have all gotten things out of it.
The material I talk about is pretty applicable to Java or C++ development. Topics such as synchronization, volatility, and thread management are similar across all current languages.