blob: 57c63ff4f27b5e85f7ef89a16de8212f2d6add0d [file] [log] [blame] [view] [edit]
# Async patterns
This library implements popular patterns for safe asynchronous programming in
C++. It does not dictate the only way to write asynchronous code, but following
the patterns will integrate with other asynchronous types such as FIDL bindings
and outgoing directories nicely:
- Each class is thread-unsafe and used from one async dispatcher.
- Divide classes along concurrency boundaries. Use message sending and task
posting to synchronize between objects in different concurrency domains.
- Each asynchronous wait or task is owned by its receiver and silently canceled
when the receiver is destroyed.
Code that follow these patterns can minimize locks and have simple destruction
logic, and still enables highly concurrent applications given many concurrency
domains. They may interface with other asynchronous programming styles, such as
those using locks and multi-threaded objects, via message sending.