CppCon 2014: Jeff Preshing "How Ubisoft Develops Games for Multicore - Before and After C++11"

CppCon · 53K views · 2014 · 1:04:33

Open on YouTube

C, C++, Rust, Go & systems languagesGame programming & enginesSoftware performance & optimizationtalk

Why Hacker News recommends it

Recommended as a clear, practical introduction to atomics and lock-free programming in C++.

What it is

CppCon 2014 talk by Jeff Preshing on how Ubisoft Montreal developed games for multicore hardware, before and after C++11 concurrency support. It goes into atomics and lock-free programming in practice.

Recommended by 2 HN commenters across 2 different months, 2015 to 2021.

What Hacker News said

Strong rec zamalek · 2015-02 · on “Comparison: Lockless programming with atomics in C++ 11 vs. mutex and RW-locks”

Jeff Preshing gave a really good introduction to atomics at CppCon 2014.[1] He explains it so clearly that 1 day later I had a fully tested lock-free work stealing queue and a queue. One of my favorite talks of last year. [1]: [this video]

Recommends dougbinks · 2015-08 · on “Implementing a lightweight task scheduler in C++”

For those interested in the implementation of atomic operations see Jeff Preshing's "How Ubisoft Develops Games for Multicore - Before and After C++11", especially after 15m55s in on the video, or slide 37 of the pdf on github. Video: [this video] PDF: [LINK]

Cites corysama · 2016-05 · on “Parallelizing the Naughty Dog Engine Using Fibers [video]”

Similar talk: CppCon 2014: Jeff Preshing "How Ubisoft Develops Games for Multicore - Before and After C++11" [this video] Ubisoft's talk spends more time getting into the weeds with atomic ops. Naughty Dog's is more of an architecture discussion. If you can only watch one, I'll recommend Naughty Dog's.

Cites gens · 2021-01 · on “Ask HN: What are you working on?”

I'm making a game/engine with efficiency/performance as a top goal. I'v spent years thinking about the design. And after i figured it out, i found a talk from an Ubisoft employee that is mostly what i came up with. The problems are many, especially since i want to support multiplayer. The biggest solutions are around how data is transformed and scheduling the code that transforms it, more or less. The talk: [this video]