Here is a blog post by Chris Reath, a Software Engineer for SAIC, that tries to come up with general guidelines about when not to use multiple-threads.
A list of his conclusions is:
1. Try not to use threads.
2. Think.
3. Keep it simple.
4. Sharing a single resource? Don’t use threads.
5. Sequential Code? Don’t use threads.
6. GUI programming? Try not to use threads, but keep the GUI responsive.
7. Multiple-Cores? Parallel Data Computation? Don’t use threads.
8. Multiple-Cores? Parallel Data Computation? The need for speed? Use Threads.


