Загрузка страницы

Working with Asynchrony Generically: A Tour of C++ Executors (part 2/2) - Eric Niebler - CppCon 21

This is Part 2 of a 2 part talk. Part 1 available here: https://youtu.be/xLboNIf7BTg

https://cppcon.org/
https://github.com/CppCon/CppCon2020
---
Asynchrony is increasingly important across the software industry, yet C++ lacks a standard async programming model or a comprehensive set of asynchronous algorithms. In this talk, Eric will describe the approach to asynchrony taken by standard Executors, currently targeting C++23. This talk with focus on how to use the new facilities, with glimpses under the covers to see how things work.

"Asynchrony" means many things. It means concurrency (e.g., thread pools) and parallelism (e.g., GPUs). It means parameterizing a computation on where it should execute. It means the ability to chain work, propagating values and errors to user-specified continuations. It means forking and joining async control flow without blocking. It requires guarantees that async work can make forward progress. It means a standard way to request that a computation stop early, and a way to propagate the "I have now stopped" notification back to the caller. And -- since this is C++ -- it means doing all that with bare-metal performance and seamless integration with C++20 coroutines.

The async programming model espoused by the recent standard Executors papers satisfies these constraints while also enabling a full suite of Generic asynchronous algorithms. C++23 will likely come with algorithms such as `then` for chaining work, `timeout` and `stop_when` for cancelling work after certain criteria are met, `when_all` for launching concurrent work and joining (without blocking), and `sync_wait` for blocking until work has finished.

The core abstraction of the Executors design, known as "Sender/Receiver", is to asynchronous algorithms what the STL's "Iterator" abstraction is to sequence algorithms: an enabling abstraction that makes reusable algorithms possible. With the containers and algorithms of the STL, the C++ Standard Library took a giant step forward in power and reusability. With C++23 Executors, the Standard Library takes the next step.

---
Eric Niebler
Eric is a long-time member of the ISO C++ Standardization Committee, and is probably best known for his work bringing ranges support to the C++20 Standard Library. He specializes in modern C++ library design, authoring several Boost libraries and the popular range-v3 library for computing with ranges and range pipelines. He currently works at NVIDIA where he is trying to build abstractions for asynchrony that are fit for standardization.

---
Videos Recorded & Edited by Digital Medium: http://online.digital-medium.co.uk

Register Now For CppCon 2022: https://cppcon.org/registration/

Видео Working with Asynchrony Generically: A Tour of C++ Executors (part 2/2) - Eric Niebler - CppCon 21 канала CppCon
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
17 ноября 2021 г. 0:10:45
00:59:53
Другие видео канала
CppCon 2016: Casey Carter “Iterator Haiku"CppCon 2016: Casey Carter “Iterator Haiku"Catch ⬆️: Unicode for C++23 - JeanHeyd Meneide - CppCon 2019Catch ⬆️: Unicode for C++23 - JeanHeyd Meneide - CppCon 2019Taskflow: A Parallel and Heterogeneous Task Programming System Using Modern C++ - Tsung-Wei HuangTaskflow: A Parallel and Heterogeneous Task Programming System Using Modern C++ - Tsung-Wei HuangCppCon 2015: Pablo Halpern “Work Stealing"CppCon 2015: Pablo Halpern “Work Stealing"Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++”CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++”CppCon 2019: Emery Berger “Mesh: Automatically Compacting Your C++ Application's Memory”CppCon 2019: Emery Berger “Mesh: Automatically Compacting Your C++ Application's Memory”CppCon 2019: David Olsen “Faster Code Through Parallelism on CPUs and GPUs”CppCon 2019: David Olsen “Faster Code Through Parallelism on CPUs and GPUs”CppCon 2019: Ben Saks “Back to Basics: Exception Handling and Exception Safety”CppCon 2019: Ben Saks “Back to Basics: Exception Handling and Exception Safety”CppCon 2018: Matt Godbolt “The Bits Between the Bits: How We Get to main()”CppCon 2018: Matt Godbolt “The Bits Between the Bits: How We Get to main()”CppCon 2019: Matt Godbolt “Path Tracing Three Ways: A Study of C++ Style”CppCon 2019: Matt Godbolt “Path Tracing Three Ways: A Study of C++ Style”Deep CMake for Library Authors - Craig Scott - CppCon 2019Deep CMake for Library Authors - Craig Scott - CppCon 2019Back to Basics: The Structure of a Program - Bob Steagall - CppCon 2020Back to Basics: The Structure of a Program - Bob Steagall - CppCon 2020The One-Decade Task: Putting std::atomic in CUDA. - Olivier Giroux - CppCon 2019The One-Decade Task: Putting std::atomic in CUDA. - Olivier Giroux - CppCon 2019CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”Generators, Coroutines and Other Brain Unrolling Sweetness - Adi Shavit - CppCon 2019Generators, Coroutines and Other Brain Unrolling Sweetness - Adi Shavit - CppCon 2019CppCon 2018: JeanHeyd Meneide “Scripting at the Speed of Thought: Lua and C++ with sol3”CppCon 2018: JeanHeyd Meneide “Scripting at the Speed of Thought: Lua and C++ with sol3”Adventures in SIMD-Thinking (part 1 of 2) - Bob Steagall - CppCon 2020Adventures in SIMD-Thinking (part 1 of 2) - Bob Steagall - CppCon 2020Just Enough Assembly for Compiler Explorer - Anders Schau Knatten - CppCon 2021Just Enough Assembly for Compiler Explorer - Anders Schau Knatten - CppCon 2021C++ Lambda Idioms - Timur Doumler - CppCon 2022C++ Lambda Idioms - Timur Doumler - CppCon 2022CppCon 2014: "Meet the Authors"CppCon 2014: "Meet the Authors"
Яндекс.Метрика