Concurrent programming language

This is an old revision of this page, as edited by CarlHewitt (talk | contribs) at 03:04, 4 July 2005. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Concurrent programming languages are those that provide linguistic mechanisms for programming concurrency. These language multi-threading, operating systems and networking to provide concurrency.

Communication in concurrent programming languages can essentially be divided into two classes:

  1. Shared-state communication, in which shared memory locations are changed. This style of concurrent programming usually requires the application of some form of locking (e.g. mutexes, semaphores, or monitors) to coordinate between threads.
  2. Message-passing communication, in which messages are sent to recipients as in the Actor model and Process calculi. Message-passing concurrency tends to be far easier to reason about than shared-state concurrency, and is typically considered a more robust form of concurrent programming. Messages can be asynchronous (aka "send and pray"), as in IP on the Internet, or may use a rendezvous style in which the sender blocks until the message is received, as in process calculi.

The Java and C# programming languages make use of both of the above kinds of communcication

Examples

Note that many of these languages are intended more as research languages (e.g. Pict) than as languages for production use. However, several of the examples (such as Ada, Erlang, Java, Limbo, and Occam) have seen widespread industrial use at various times in the last 20 years.