Etudes on buffering: asynchronous notifications, update replication, collation of pending requests
Three tasks arising from practice and all related to storing data in a buffer are taken as an example to show the use of modern C++ features.
Practical application development can lead to tasks that, after analysis, appears to be general enough to extract an abstraction that is potentially useful for multiple applications. Bringing the solution to the level suitable for reusing (in contrast to an ad hoc solution for one particular application) can involve more mental efforts to extract variative details of the tasks and to express them in the programming language.
The talk shares implementation of three abstractions relating to one topic, namely storing data in a buffer in concurrent programming. The way from task analysis to implementation in C++17 is shown.