Timur Doumler

About Me

Timur Doumler is a software engineer specialising in low-latency and real-time C++. He works at Citadel Securities and is an active member of the ISO C++ standard committee, where he has (co-)authored many successful proposals including [[assume]]std::inplace_vector, and contract assertions, and is currently serving as the chair of SG22, the C and C++ Liaison Group.

Timur began his C++ journey in computational astrophysics, working on large-scale cosmological simulations. After completing a PhD in astrophysics, he spent a decade in the audio and music technology industry and co-founded the music tech startup Cradle. He has also worked at JetBrains, contributing to their in-house C++ frontend and later serving as Developer Advocate for the CLion IDE and other popular C++ tools.

Timur is passionate about correct code, effective tools, and the evolution of the C++ language.

Sessions

  • SIMD for Audio Developers

    00:00 - 00:00 UTC | Monday 9th November 2026 |
    Beginner
    Intermediate
    Advanced

    SIMD (Single Instruction, Multiple Data) is an essential feature of modern hardware and a cornerstone of audio processing. Modern CPUs provide SIMD in a variety of forms, from fixed-width instruction sets such as SSE, AVX, and NEON to the Scalable Vector Extension (SVE). There are several ways to leverage SIMD in your audio app: relying on compiler auto-vectorisation, using libraries such as xsimd, Highway, Eigen, or JUCE's dsp::SIMDRegister, writing intrinsics by hand, or even dropping down to assembly. Each approach comes with different tradeoffs around portability, control, and effort. The upcoming C++26 standard adds std::simd, a long-anticipated abstraction that brings […]

  • Demystifying std::memory_order

    09:00 - 09:50 UTC | Wednesday 12th November 2025 | Bristol 2
    Advanced

    Atomic variables are an important tool for low-latency and real-time audio processing as they are essential to implementing any kind of lock-free algorithm or data structure. In C++, atomic variables are readily available in the Standard Library through std::atomic. However, in order to use std::atomic not only correctly, but also efficiently and performantly, it is crucial to pick the correct memory order for the atomic operation at hand depending on the requirements of the algorithm. This can be accomplished via the std::memory_order parameter that every atomic operation in C++ accepts. Yet memory order in C++ is notoriously hard to reason […]

  • Wait-Free Thread Synchronisation With the SeqLock

    10:00 - 10:50 UTC | Wednesday 13th November 2024 | Bristol 2
    Advanced

    When developing real-time audio processing applications in C++, the following problem arises almost inevitably: how can we share data between the real-time audio thread and the other threads (such as a GUI thread) in a way that is real-time safe? How can we synchronise reads and writes to C++ objects across threads, and manage the lifetime of these objects, while remaining wait-free on the real-time thread? This talk is the second in a series of talks about thread synchronisation in a real-time context. In the first episode, given at ADC 2022, we focused on the case where the real-time thread […]