Recently I was blogging about the oft over-used idea of multi-threading in .Net. I put together a staring list for "APIs you should know first":
- Thread
- ThreadPool
- ManualResetEvent
- AutoResetEvent
- EventWaitHandle
- WaitHandle
- Monitor
- Mutex
- Semaphore
- Interlocked
- BackgroundWorker
- AsyncOperation
- lock Statement
- volatile
- ThreadStaticAttribute
- Thread.MemoryBarrier
- Thread.VolatileRead
- Thread.VolatileWrite
Then I started thinking maybe not all of these are important. For instance, Thread.MemoryBarrier could probably be safely removed from the list. Add to that the obvious statement that I don't know everything and I decided to turn here.
So this is a broad and opinionated question, but I'm curious as to the collective's opinion as to a best-practice study list. Essentially I'm looking for a short hit list for new and/or Jr. developers to work from when beginning to write multi-threading code in C#.
So without further commentary, what should be added or removed from the above list?