By Dietmar Kühl
With coroutines being readily available and supported in all mainstream compiler implementations, more use cases than simple generators and tasks are entirely within reach. As any operation which may use I/O or execute on a different context is effectively asynchronous, the question then becomes whether all of these should be co_awaited. Of course, the implication is that essentially everything which isn’t just a computation should then be co_awaited.
This presentation discusses some experiments of making things optionally asynchronous. It talks about the design choices encountered, some of the implementation details, and some performance results when making implementations optionally asynchronous.
The presentation is targeted at experienced C++ developers.