Writing Concurrent Code with Lock-Free Algorithms

Taking a unique hardware-up approach, Martin will teach you how to build code, free of locks, that can reach world-class performance levels.

Tickets

Additional Information

By the end of this course candidates will have acquired a new in-depth knowledge of concurrent programming that allows them to develop data structures such as queues, executors, and shared memory IPC transports that significantly out perform any products currently available.

In addition to learning the basic techniques of building high-performance data structures, a performance testing and profiling discipline will be introduced that is fundamental to working at the extremes of systems performance.

Understanding Mechanical Sympathy

  • Performance considerations on modern hardware
  • How modern x86-64 hardware informs concurrent and high performance programming techniques
  • Memory models for software and hardware
  • Why contention of any type is the enemy and how to avoid it
  • How we manage contention when we absolutely must
  • How the JVM provides support for concurrent programs
  • Profiling and performance testing

Concurrent and High-performance Algorithm Design

  • Lock-free concurrency primitives
  • Signalling state change
  • Ensuring order
  • Concurrent data structures – Queues, Dynamic Lists, Executors, Shared memory IPC, Locks
  • Preventing speculative execution during critical data exchanges
  • Managing contended state
  • Wait-free techniques
  • API design to avoid the latency J-curve
  • Efficient back-off strategies
  • Discovering hidden contention and how to avoid it