Asynchronous programming is difficult. In spite of this it continues to supplant traditional synchronous programming. Operating systems provide asynchronous primitives. Boost.Asio and the Networking TS make these easily accessible. This makes asynchronous programming increasingly convenient and essential within the C++ ecosystem.
As with other difficult and complex areas of software engineering (such as parallel programming) asynchronous programming can be tamed through the application of patterns, practices, and rules. Design patterns are useful not because most programming problems are unique, but rather because they’re instantiations of archetypes addressed by a certain well-known pattern. Once the pattern is known and its proper use can be identified seemingly complex problems become banal.
This talk from Robert Leahy of MayStreet introduces such patterns for use with the Networking TS and Boost.Asio. Several common problems encountered in real world use of Boost.Asio will be introduced and patterns to address them elegantly and within the internal structure of the Networking TS will be covered.