Slides:
https://github.com/boostcon/cppnow_presentations_2017/blob/master/05-17-2017_wednesday/good_fifos_make_good_thread_neighbors__jonathan_beard__cppnow_05-17-2017.pdfVideo:
https://www.youtube.com/watch?v=pvp-QQD0Xx0Almost every program needs parallelism to scale performance. To have useful parallelism, threads must communicate in some way. There are a few predominant ways to do this, the most ubiquitous is the first-in first-out (FIFO) queue. Have you ever thought about the micro-architectural implications of the code in your FIFO? Do certain constructs behave better or worse? We’ll look at several open source FIFO implementations, and how they behave on a set of hardware. We’ll go step by step through the code, then assembly code, and look at what happens under the hood of your processor core. Never again will you wonder about how that FIFO impacts your performance, you’ll know exactly! Come see my talk to take a tour of the most common FIFOs as they wind the load-store pathways of some common architectures.