Concurrency (computer science)
In computer science, concurrency is the property of program, algorithm, or problem decomposability into order-independent or partially-ordered components or units. This means that even if the concurrent units of the program, algorithm, or problem are executed out-of-order or in partial order, the result will remain determinate. The units of computation may be executing on one or more cores on the same chip, one or more preemptively time-shared threads on the same processor, or on distributed systems.
A number of mathematical models have been developed for general concurrent computation including Petri nets, process calculi, the Parallel Random Access Machine model, the Actor model and the Reo Coordination Language.
Issues
Because computations in a concurrent system can interact with each other while they are executing, the number of possible execution paths in the system can be extremely large, and the resulting outcome can be indeterminate. Concurrent use of shared resources can be a source of indeterminacy leading to issues such as deadlock, and resource starvation.