Async in Standard C++ is in a sad state. The standard tools — promises, futures, threads, locks, and std::async — are either inefficient, broken, or both. Even worse, there is no standard way to say where work should happen. Parallel algorithms, heterogeneous computing, networking & IO, reactive streams, and more: all critically important foundational technologies that await a standard abstraction for asynchronous computation.
In this talk, Eric Niebler digs into the Standard Committee's search for the basis operations that underpin all asynchronous computation. He will discuss why futures and promises are slow, what an executor is, what callbacks and coroutines have in common, and how the "Task" abstraction — under active R&D at Facebook — might do for async algorithms what the Iterator abstraction did for synchronous ones.