- Think parallel.
- Program using abstraction.
- Program in tasks (chores), not threads (cores).
- Design with the option to turn concurrency off.
- Avoid using locks.
- Use tools and libraries designed to help with concurrency.
- Use scalable memory allocators.
- Design to scale through increased workloads.
These are from the Intel presentation ''Multi-Core is Mainstream: Are you Ready?'' by James Reinder