Concurrency (computer science)

concurrencyconcurrentconcurrentlyconcurrent systemsconcurrency theoryconcurrent systemconcurrency modelconcurrent softwarecomputationconcurrent computation
In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome.wikipedia
249 Related Articles

Process calculus

process calculiprocess algebracalculus
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.
In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems.

Actor model

actorsactorActor programming
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.
It has been used both as a framework for a theoretical understanding of computation and as the theoretical basis for several practical implementations of concurrent systems.

Petri net

Petri netsPetri net theoryconcurrent 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.
Since firing is nondeterministic, and multiple tokens may be present anywhere in the net (even in the same place), Petri nets are well suited for modeling the concurrent behavior of distributed systems.

Edsger W. Dijkstra

Edsger DijkstraDijkstraE. W. Dijkstra
As Leslie Lamport (2015) notes, "While concurrent program execution had been considered for years, the computer science of concurrency began with Edsger Dijkstra's seminal 1965 paper that introduced the mutual exclusion problem. ... The ensuing decades have seen a huge growth of interest in concurrency—particularly in distributed systems. Looking back at the origins of the field, what stands out is the fundamental role played by Edsger Dijkstra".
His foundational work on concurrency, semaphores, mutual exclusion, deadlock (deadly embrace), finding shortest paths in graphs, fault-tolerance, self-stabilization, among many other contributions comprises many of the pillars upon which the field of distributed computing is built.

Message passing

message-passingmessagesmessage
Some of these are based on message passing, while others have different mechanisms for concurrency.
Message passing is key to some models of concurrency and object-oriented programming.

Communicating sequential processes

CSPCommunicating Sequential Processes (CSP)channel
In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems.

Denotational semantics

denotationalfully abstractHistory of denotational semantics
For example, Lee and Sangiovanni-Vincentelli have demonstrated that a so-called "tagged-signal" model can be used to provide a common framework for defining the denotational semantics of a variety of different models of concurrency, while Nielsen, Sassone, and Winskel have demonstrated that category theory can be used to provide a similar unified understanding of different models.
Many researchers have argued that the domain-theoretic models given above do not suffice for the more general case of concurrent computation.

Unbounded nondeterminism

fairnessbounded nondeterminismfair
For example, arbitration introduces unbounded nondeterminism which raises issues with model checking because it causes explosion in the state space and can even cause models to have an infinite number of states.
In computer science, unbounded nondeterminism or unbounded indeterminacy is a property of concurrency by which the amount of delay in servicing a request can become unbounded as a result of arbitration of contention for shared resources while still guaranteeing that the request will eventually be serviced.

Concurrency control

concurrencyGlobal concurrency controlconcurrent access
Concurrent systems such as Operating systems and Database management systems are generally designed to operate indefinitely, including automatic recovery from failure, and not terminate unexpectedly (see Concurrency control).
Concurrency control in Database management systems (DBMS; e.g., Bernstein et al. 1987, Weikum and Vossen 2001), other transactional objects, and related distributed applications (e.g., Grid computing and Cloud computing) ensures that database transactions are performed concurrently without violating the data integrity of the respective databases.

Concurrent computing

concurrentconcurrent programmingconcurrency
As Leslie Lamport (2015) notes, "While concurrent program execution had been considered for years, the computer science of concurrency began with Edsger Dijkstra's seminal 1965 paper that introduced the mutual exclusion problem. ... The ensuing decades have seen a huge growth of interest in concurrency—particularly in distributed systems. Looking back at the origins of the field, what stands out is the fundamental role played by Edsger Dijkstra".
Concurrent computing is a form of computing in which several computations are executed during overlapping time periods—concurrently—instead of sequentially (one completing before the next starts).

Coroutine

coroutinesCo-routinesDeterministic concurrency
Some concurrent programming models include coprocesses and deterministic concurrency.
This means that coroutines provide concurrency but not parallelism.

Clojure

Rich HickeyClojureScriptClojure programming language
Rich Hickey developed Clojure because he wanted a modern Lisp for functional programming, symbiotic with the established Java platform, and designed for concurrency.

Rust (programming language)

RustRust programming languageCargo
Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.

Go (programming language)

GoGo programming languageGolang
Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.

Temporal logic of actions

TLATLA+
Others, such as action computational tree logic, Hennessy–Milner logic, and Lamport's temporal logic of actions, build their assertions from sequences of actions (changes in state).
It is used to describe behaviours of concurrent systems.

Process (computing)

processprocessesprocessing
Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently.

Ptolemy Project

PtolemyPtolemy IIPtolemy Project (computing)
The Ptolemy Project is an ongoing project aimed at modeling, simulating, and designing concurrent, real-time, embedded systems.

Concurrent object-oriented programming

ConcurrentConcurrent OOP
Concurrent object-oriented programming is a programming paradigm which combines object-oriented programming (OOP) together with concurrency.

International Conference on Concurrency Theory

The International Conference on Concurrency Theory (CONCUR) is an academic conference in the field of computer science, with focus on the theory of concurrency and its applications.

Yield (multithreading)

yieldyield controlyielding
In these models, threads of control explicitly yield their timeslices, either to the system or to another process.
Coroutines are a fine-grained concurrency primitive, which may be required to yield explicitly.

Gordon Pask

Chu space

Chu spaces can serve as a model of concurrent computation in automata theory to express branching time and true concurrency.