Proactor is a software design pattern for event handling in which long running activities are running in an asynchronous part. A completion handler is called after the asynchronous part has terminated.
The main entity in a Proactor pattern is the dispatcher.
When there is an available thread, it dequeues itself and dispatches a task for the thread to run.
Each task may have a completion handler
https://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview/core/async.html
https://en.wikipedia.org/wiki/Proactor_pattern
https://medium.com/@beeleeong/the-proactor-pattern-bbfe7c33a43c