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
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
Показать
Комментарии отсутствуют
Информация о видео
Другие видео канала
![CppCon 2016: Casey Carter “Iterator Haiku"](https://i.ytimg.com/vi/rZs9ndzGB_8/default.jpg)
![Catch ⬆️: Unicode for C++23 - JeanHeyd Meneide - CppCon 2019](https://i.ytimg.com/vi/BdUipluIf1E/default.jpg)
![Taskflow: A Parallel and Heterogeneous Task Programming System Using Modern C++ - Tsung-Wei Huang](https://i.ytimg.com/vi/MX15huP5DsM/default.jpg)
![CppCon 2015: Pablo Halpern “Work Stealing"](https://i.ytimg.com/vi/iLHNF7SgVN4/default.jpg)
![Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023](https://i.ytimg.com/vi/EqiLTgQcDPM/default.jpg)
![CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++”](https://i.ytimg.com/vi/8FoAxasNssA/default.jpg)
![CppCon 2019: Emery Berger “Mesh: Automatically Compacting Your C++ Application's Memory”](https://i.ytimg.com/vi/XRAP3lBivYM/default.jpg)
![CppCon 2019: David Olsen “Faster Code Through Parallelism on CPUs and GPUs”](https://i.ytimg.com/vi/cbbKEAWf1ow/default.jpg)
![CppCon 2019: Ben Saks “Back to Basics: Exception Handling and Exception Safety”](https://i.ytimg.com/vi/W6jZKibuJpU/default.jpg)
![CppCon 2018: Matt Godbolt “The Bits Between the Bits: How We Get to main()”](https://i.ytimg.com/vi/dOfucXtyEsU/default.jpg)
![CppCon 2019: Matt Godbolt “Path Tracing Three Ways: A Study of C++ Style”](https://i.ytimg.com/vi/HG6c4Kwbv4I/default.jpg)
![Deep CMake for Library Authors - Craig Scott - CppCon 2019](https://i.ytimg.com/vi/m0DwB4OvDXk/default.jpg)
![Back to Basics: The Structure of a Program - Bob Steagall - CppCon 2020](https://i.ytimg.com/vi/3KoXeegncrs/default.jpg)
![The One-Decade Task: Putting std::atomic in CUDA. - Olivier Giroux - CppCon 2019](https://i.ytimg.com/vi/VogqOscJYvk/default.jpg)
![CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”](https://i.ytimg.com/vi/kIoZDUd5DKw/default.jpg)
![Generators, Coroutines and Other Brain Unrolling Sweetness - Adi Shavit - CppCon 2019](https://i.ytimg.com/vi/qYHDERleSL8/default.jpg)
![CppCon 2018: JeanHeyd Meneide “Scripting at the Speed of Thought: Lua and C++ with sol3”](https://i.ytimg.com/vi/xQAmGBfKnas/default.jpg)
![Adventures in SIMD-Thinking (part 1 of 2) - Bob Steagall - CppCon 2020](https://i.ytimg.com/vi/qejTqnxQRcw/default.jpg)
![Just Enough Assembly for Compiler Explorer - Anders Schau Knatten - CppCon 2021](https://i.ytimg.com/vi/_sSFtJwgVYQ/default.jpg)
![C++ Lambda Idioms - Timur Doumler - CppCon 2022](https://i.ytimg.com/vi/xBAduq0RGes/default.jpg)
![CppCon 2014: "Meet the Authors"](https://i.ytimg.com/vi/4cCeUfzH-No/default.jpg)