13 Asynchronous model [async]

13.2 Requirements [async.reqmts]

13.2.7 Requirements on asynchronous operations [async.reqmts.async]

13.2.7.1 General asynchronous operation concepts [async.reqmts.async.concepts]

An initiating function is a function which may be called to start an asynchronous operation. A completion handler is a function object that will be invoked, at most once, with the result of the asynchronous operation.

The life cycle of an asynchronous operation is comprised of the following events and phases:

  • Event 1: The asynchronous operation is started by a call to the initiating function.

  • Phase 1: The asynchronous operation is now outstanding.

  • Event 2: The externally observable side effects of the asynchronous operation, if any, are fully established. The completion handler is submitted to an executor.

  • Phase 2: The asynchronous operation is now completed.

  • Event 3: The completion handler is called with the result of the asynchronous operation.

In this document, all functions with the prefix async_ are initiating functions.