Scaling with C++11
As the number of cores per processor increases, software need to be able to execute multiple tasks in parallel in order to benefit from Moore’s law. This is not only a question of writing parallel algorithms, but also a matter of designing the application properly to reduce inter-thread dependencies. These dependencies may be very hard to find and are the results of decades of serial programming. Thus, writing truly scalable software is less a question of technical expertise than adopting the appropriate state of mind.
This presentation is about the design, techniques and tools used by the team who wrote the hyperscalable database “quasardb.” Building upon concrete scalability challenges, the presenter will expose typical multithreading anti-patterns and how to avoid them. The topics covered include: atomics, micro locks, lock-free and wait-free containers, memory management strategies (copy on write, smart pointers, perfect forwarding…), thread local storage, asynchronous I/O, and much more!
This presentation assumes a good knowledge of system programming and C++11 (lambda and rvalue references).
Speaker: Edouard Alligand