Concurrency (computer science)

Source: Wikipedia, the free encyclopedia.
The "Dining Philosophers", a classic problem involving concurrency and shared resources

In

partial order, without affecting the outcome. This allows for parallel execution of the concurrent units, which can significantly improve overall speed of the execution in multi-processor and multi-core systems. In more technical terms, concurrency refers to the decomposability of a program, algorithm, or problem into order-independent or partially-ordered components or units of computation.[1]

According to Rob Pike, concurrency is the composition of independently executing computations,[2] and concurrency is not parallelism: concurrency is about dealing with lots of things at once but parallelism is about doing lots of things at once. Concurrency is about structure, parallelism is about execution, concurrency provides a way to structure a solution to solve a problem that may (but not necessarily) be parallelizable.[3]

A number of mathematical models have been developed for general concurrent computation including

parallel random-access machine model, the actor model and the Reo Coordination Language
.

History