12.12
Effective Modern C++
Chapter 7. The Concurrency API
1. Item 35: Prefer task-based programming to thread -based.
2. Item 36: Specify std::launch::async if asynchronicity is essential.
3. Item 37: Make std::threads unjoinable on all paths.
4. Item 38: Be aware of varying thread handle destructor behaviour.
5. Item 39: Consider void futures for one-shot event communication.
6. Item 40: Use std::atomic for concurrency, volatile for special memory.