A '''model of concurrency''' is a mathematical theory for reasoning about [[concurrent systems]]. There are many different ways to approach the problem of modelling such systems, depending on the level of abstraction. The key representational decisions involved are:
* Interleaving vs. noninterleaving concurrency
* Shared variable vs. message-passing communications
** Asynchronous vs. synchronous communications
** Delivery guarantees
* State-based vs. transition-based semantics
* System vs. behaviour
* Linear vs. branching time
* Fairness
Existing models of concurrency include:
* [[Actor model]]
* [[Process calculi]] such as CSP, CCS, and the π-calculus