(GlobalCpp) Coroutines (wonder)land
Details
Description
Damir will give a practical example of using coroutines in socket-based communication.
We will redesign the receiver component, common for both endpoints, for handling the data exchange. We will start with a naïve approach – trying directly to replace existing code with a coroutine and explaining why this is an antipattern. Then we will redesign the receiver to be coroutines “friendly” and how we can reimplement the Server and Client components – to handle multiple connections within a single thread, instead of having one receiver thread per connection.
We will also explore how we can employ custom allocators to override the coroutine default allocation strategy – allocation on the heap. I’ll describe the implementation, starting with the fixed-size stack allocator – with internal memory storage on the stack, and how to build the pool of fixed-size allocators of different sizes on top of it. We will wrap this implementation into std::pmr::memory_resource interface to have a polymorphic, type-erased allocator that can be used along with std::pmr containers. We will use it to override the coroutine default allocation strategy, allocating memory primarily on the stack, with a fallback strategy – allocating on the heap, only when the capacity of the internal stack storage is exhausted.
About the Presenter
Damir Ljubić is a Principal SW Engineer at e.solutions GmbH in Ingolstadt, Germany. As a member of the connected-media team, he's responsible for the seamless integration of smartphone streaming technologies into the native Infotainment system. Previously worked at RT-RK DOO Novi Sad, Serbia, on various projects – mostly on developing the DTV (Digital Television) software. His upcoming book "Infotainment Development on Android", due to release later this year, is intended to be a pragmatic guide that helps even experienced software developers gain insights into various areas of embedded development.




