Excellent article on decomposing and categorizing concurrency traits by Herb Sutter … http://www.ddj.com/dept/cpp/200001985
The three “pillars” identified in the article:
- Responsiveness and Isolation Via Asynchronous Agents
- Throughput and Scalability Via Concurrent Collections
- Consistency Via Safely Shared Resources
An interesting reference from this article is to an earlier article from Herb illustrating why lock based programming is hard and insufficient: http://www.ddj.com/dept/cpp/184401930