Writing Concurrent Code with Lock-Free Algorithms

Course Details

Next Delivery: TBD
Location: Instil HQ, Belfast
Duration: 3 Days

Backed by many years of hard-won experience, Martin has created a truly inspiring and challenging course for Java and C++ programmers interested in building low-latency, high-throughput systems.

Taking a unique hardware-up approach, Martin will teach you how to build code that reaches world-class performance levels.

About The Trainer

Martin Thompson is one of the world’s foremost experts on concurrency and low-latency software.

Having spent many years designing and developing systems for some of the busiest exchanges in the world, Martin now works as an independent consultant and trainer.

Martin is in huge demand both as a conference speaker and as a trainer, and has been packing in the crowds at JavaOne, QCon, GOTO, and much more besides.

Pre-requisites

Ideally you should bring a Linux-based laptop capable of running at least 4 concurrent threads. That is, a quad core or dual core with hyperthreading. You should also have Java 7 and your favourite IDE installed. Everything else, including lunch, will be provided.

Content

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

Recent Feedback

“This course was really great. It changed the way I think about all my programming work, not just with concurrent systems.”

“Excellent course materials and code examples, helping you to try things for yourself and learn by doing. The course has provided a wealth of useful information. Martin also covered interesting areas on request in order to tailor parts to the interest of participants. The most useful course I”ve ever done. ”

“The course is excellent, the materials very well prepared, the off the cuff discussions invaluable.”

“Great class. Martin really knows his stuff. He also struck a good balance between talking through concepts and having us do hands-on exercises. ”

“I feel it would be very worthwhile for all serious developers to think about attending (this course)!”

Incredible quick review on JavaEE. The course was enjoyable and easy to follow. The teacher expertise was really high and the explanations was clear even for complex concepts, a really java-expert/rockstar. Very useful to brush up knowledge and to know more about the hidden corners in java. One of the best tech courses I have ever attended. Patricia.
First part of the course was a refresher, having covered these principals before. Was reassuring to see how I had previously been implementing these principals and reinforced what developing behaviors I should maintain and which I should modify/start to use. Second part of the course was newer and very interesting although challenging. Exercises allowed what was covered to be put into practice.
This has been the most enjoyable course instil course i have attended. 5* would highly recommend.
Garth was a really good instructor, had a good knowledge of the subject, but more importantly was able to bring in information from outside the core subject. really enjoyed his delivery style.

Not seeing a course you need? We offer customised versions of many of our courses and are always pleased to chat about your specific needs.

We also offer pre- and post-workshop guidance and mentoring to help facilitate the introduction of training material into your organisation.