FACTOID # 61: Indonesia contains the most known mammal species - and the most mammal species under threat.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Concurrent computing

Concurrent computing is the concurrent (simultaneous) execution of multiple interacting computational tasks. These tasks may be implemented as separate programs, or as a set of processes or threads created by a single program. The tasks may also be executing on a single processor, several processors in close proximity, or distributed across a network. Concurrent computing is related to parallel computing, but focuses more on the interactions between tasks. Correct sequencing of the interactions or communications between different tasks, and the coordination of access to resources that are shared between tasks, are key concerns during the design of concurrent computing systems. Pioneers in the field of concurrent computing include Edsger Dijkstra, Per Brinch Hansen, and C. A. R. Hoare. Image File history File links Emblem-important. ... The Dining Philosophers, a classic problem involving concurrency and shared resources In computer science, concurrency is a property of systems in which several computational processes are executing at the same time, and potentially interacting with each other. ... A computer program is a collection of instructions that describe a task, or set of tasks, to be carried out by a computer. ... In computing, a process is a running instance of a program, including all variables and other state. ... For the form of code consisting entirely of subroutine calls, see Threaded code. ... CPU redirects here. ... Multiprocessing is traditionally known as the use of multiple concurrent processes in a system as opposed to a single process at any one instant. ... Distributed computing is a method of computer processing in which different parts of a program are run simultaneously on two or more computers that are communicating with each other over a network. ... Parallel computing is the simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain results faster. ... Edsger Dijkstra Edsger Wybe Dijkstra (Rotterdam, May 11, 1930 – Nuenen, August 6, 2002; IPA: ) was a Dutch computer scientist. ... Per Brinch Hansen. ... Sir Charles Antony Richard Hoare (Tony Hoare or C.A.R. Hoare, born January 11, 1934) is a British computer scientist, probably best known for the development of Quicksort, the worlds most widely used sorting algorithm, in 1960. ...

Contents

Concurrent interaction and communication

In some concurrent computing systems communication between the concurrent components is hidden from the programmer (e.g., by using futures), while in others it must be handled explicitly. Explicit communication can be divided into two classes: In computer science, a future (also known as a promise in the programming languages E and Alice) is a proxy for a result that is not yet known, usually because the computation of its value has not yet completed. ...

Shared memory communication 
Concurrent components communicate by altering the contents of shared memory locations (exemplified by Java and C#). This style of concurrent programming usually requires the application of some form of locking (e.g., mutexes (means mutual exclusion), semaphores, or monitors) to coordinate between threads.
Message passing communication 
Concurrent components communicate by exchanging messages (exemplified by Erlang and occam). The exchange of messages may be carried out asynchronously (sometimes referred to as "send and pray", although it is standard practice to resend messages that are not acknowledged as received), or may use a rendezvous style in which the sender blocks until the message is received. Message-passing concurrency tends to be far easier to reason about than shared-memory concurrency, and is typically considered a more robust, although slower, form of concurrent programming. A wide variety of mathematical theories for understanding and analyzing message-passing systems are available, including the Actor model, and various process calculi. Message passing can be efficiently implemented on symmetric multiprocessors using shared coherent memory.

// Diagram of a typical Shared memory system. ... Java language redirects here. ... The title given to this article is incorrect due to technical limitations. ... Mutual exclusion (often abbreviated to mutex) algorithms are used in concurrent programming to avoid the simultaneous use of un-shareable resources by pieces of computer code called critical sections. ... This article is about the computer science application of mutual exclusion. ... A monitor is an approach to synchronizing two or more computer tasks that use a shared resource, usually a hardware device or a set of variables. ... In computer science, message passing is a form of communication used in concurrent programming, parallel programming, object-oriented programming, and interprocess communication. ... Erlang is a general-purpose concurrent programming language and runtime system. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In computer science, the Actor model is a mathematical model of concurrent computation that treats actors as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to... The process calculi (or process algebras) are a diverse family of related approaches to formally modelling concurrent systems. ... Symmetric multiprocessing, or SMP, is a multiprocessor computer architecture where two or more identical processors are connected to a single shared main memory. ... Cache coherence refers to the integrity of data stored in local caches of a shared resource. ...

Coordinating access to resources

One of the major issues in concurrent computing is preventing concurrent processes from interfering with each other. For example, consider the following algorithm for making withdrawals from a checking account represented by the shared resource balance:

 1 bool withdraw(int withdrawal) { 2 if( balance > withdrawal ) { 3 balance = balance - withdrawal; 4 return true; 5 } 6 return false; 7 } 

Suppose balance=500, and two concurrent processes make the calls withdraw(300) and withdraw(350). If line 2 in both operations executes before line 3 both operations will find that balance > withdrawal evaluates to true, and execution will proceed to subtracting the withdrawal amount. However, since both processes perform their withdrawals, the total amount withdrawn will end up being more than the original balance. These sorts of problems with shared resources require the use of concurrency control, or non-blocking algorithms. In computer science -- more specifically, in the field of databases -- concurrency control is a method used to ensure that database transactions are executed in a safe manner (i. ... In concurrent programming, non-blocking algorithms are those algorithms designed to avoid requiring a critical section. ...


Because concurrent systems rely on the use of shared resources (including communications mediums), concurrent computing in general requires the use of some form of arbiter somewhere in the implementation to mediate access to these resources. Metastability in electronics is the ability of a non-equilibrium electronic state to persist for a long period of time (see asynchronous circuit). ...


Unfortunately, while many solutions exist to the problem of a conflict over one resource, many of those "solutions" have their own concurrency problems such as deadlock when more than one resource is involved. The Dining Philosophers, a classic problem involving concurrency and shared resources In computer science, concurrency is a property of systems in which several computational processes are executing at the same time, and potentially interacting with each other. ... This article is about deadlock in computing. ...


Advantages

  • Increased application throughput - the number of tasks done in certain time period will increase.
  • High responsiveness for input/output - input/output-intensive applications mostly wait for input or output operations to complete. Concurrent programming allows the time that would be spent waiting to be used for another task.
  • More appropriate program struct - some problems and problem domains are well-suited to representation as concurrent tasks or processes.

Image File history File links Question_book-3. ...

Concurrent programming languages

Concurrent programming languages are programming languages that use language constructs for concurrency. These constructs may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory) or futures (known also as promises). Other listings of programming languages are: Categorical list of programming languages Generational list of programming languages Chronological list of programming languages Note: Esoteric programming languages have been moved to the separate List of esoteric programming languages. ... The Dining Philosophers, a classic problem involving concurrency and shared resources In computer science, concurrency is a property of systems in which several computational processes are executing at the same time, and potentially interacting with each other. ... Many programming languages, operating systems, and other software development environments support what are called threads of execution. ... Distributed computing is a method of computer processing in which different parts of a program are run simultaneously on two or more computers that are communicating with each other over a network. ... In computer science, message passing programming, as opposed to imperative programming, is a programming paradigm that describes computation in terms of communicating messages among senders and recipients that have local state as opposed to operations that change a global state. ... For other uses, see Share. ... PRAM stands for Parallel Random Access Machine, which is an abstract machine for designing the algorithms applicable to parallel computers. ... In computer science, a future (also known as a promise in the programming languages E and Alice) is a proxy for a result that is not yet known, usually because the computation of its value has not yet completed. ...


Today, the most commonly used programming languages that have specific constructs for concurrency are Java and C#. Both of these languages fundamentally use a shared-memory concurrency model, with locking provided by monitors (although message-passing models can and have been implemented on top of the underlying shared-memory model). Of the languages that use a message-passing concurrency model, Erlang is probably the most widely used in industry at present. Java language redirects here. ... The title given to this article is incorrect due to technical limitations. ... A monitor is an approach to synchronizing two or more computer tasks that use a shared resource, usually a hardware device or a set of variables. ... Erlang is a general-purpose concurrent programming language and runtime system. ...


Many concurrent programming languages have been developed more as research languages (e.g. Pict) rather than as languages for production use. However, languages such as Erlang, Limbo, and occam have seen industrial use at various times in the last 20 years. Languages in which concurrency plays an important role include: Please wikify (format) this article or section as suggested in the Guide to layout and the Manual of Style. ...

Many other languages provide support for concurrency in the form of libraries (on level roughly comparable with the above list). Ada is a structured, statically typed imperative computer programming language designed by a team led by Jean Ichbiah of CII Honeywell Bull during 1977–1983. ... Afnix (until 2003 developed under name Aleph) is a multi-threaded functional programming language with dynamic symbol bindings that support the object-oriented programming paradigm. ... The Alef programming language was designed by Phil Winterbottom of Bell Labs as part of the Plan 9 operating system. ... Plan 9 from Bell Labs is a distributed operating system, primarily used as a research vehicle. ... Alice is a functional programming language designed by the Programming Systems Lab at Saarland University. ... Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. ... ChucK is a concurrent, strongly-timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, and Windows. ... Cilk is a general-purpose programming language designed for multithreaded parallel programming. ... C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... Cω (pronounced C omega and usually written as Cw or Comega language) is a free extension to the C# programming language, developed by the WebData team in SQL Server in collaboration with Microsoft Research in the UK and Redmond. ... Clean is a purely functional programming language that, in some respects, is similar to the better-known Haskell programming language. ... Haskell is a standardized purely functional programming language with non-strict semantics, named after the logician Haskell Curry. ... Concurrent ML (CML) is a concurrent extension of the Standard ML programming language. ... Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. ... Concurrent Pascal was designed by Per Brinch Hansen for writing concurrent programs such as operating systems and real-time monitoring systems on shared-memory computers. ... Per Brinch Hansen. ... This article does not cite any references or sources. ... Curry is an experimental functional logic programming language, based on the Haskell language. ... E is an object-oriented programming language for secure distributed computing, created by Mark S. Miller and others at Electric Communities in 1997. ... Eiffel is an ISO-standardized object-oriented programming language designed for extensibility, reusability, reliability and programmer productivity. ... Scoop is a content management system originally developed by Rusty Foster. ... Erlang is a general-purpose concurrent programming language and runtime system. ... Janus is a computer programming language partially described, perhaps for the first time, in K. Kahn and Vijay A. Saraswat, Actors as a special case of concurrent constraint (logic) programming, in SIGPLAN Notices, October 1990 (http://doi. ... Join Java is a programming language that extends the standard Java programming language with the Join Semantics of the Join Calculus. ... Java language redirects here. ... Joule is a concurrent dataflow programming language, designed for building distributed applications. ... Concurrent Haskell extends[1] Haskell 98 with explicit concurrency. ... Limbo is a programming language for writing distributed systems and is the language used to write applications for the Inferno operating system. ... The Alef programming language was designed by Phil Winterbottom of Bell Labs as part of the Plan 9 operating system. ... Inferno is an operating system for creating and supporting distributed services. ... MultiLisp is a functional programming language and dialect of the Lisp dialect Scheme, extended with constructs for parallel execution and shared memory; MultiLisp is implemented in Interlisp. ... Scheme is a multi-paradigm programming language. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In computer science, Communicating Sequential Processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. ... Occam-Pi is the new name for the derivation of occam developed by the KRoC team at the University of Kent. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ... Orc is a concurrent, nondeterministic computer programming language developed by Jayadev Misra at the University of Texas at Austin. ... In mathematics, a Kleene algebra (named after Stephen Cole Kleene, pronounced clay-knee) is either of two different things: A bounded distributive lattice with an involution satisfying De Morgans laws, and the inequality x∧−x ≤ y∨−y. ... Oz is a multi-paradigm programming language. ... The Mozart Programming System is a multi-platform implementation of the Oz programming language developed by the Mozart Consortium. ... Multiplatform (or multi-platform) is a term commonly used in the computer world about a project that can be used on multiple platforms. ... Please wikify (format) this article or section as suggested in the Guide to layout and the Manual of Style. ... In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ... The SALSA programming language (Simple Actor Language System and Architecture) is an actor-oriented programming language that uses concurrency primitives beyond asynchronous message passing, including token-passing, join, and first-class continuations. ... SR (short for Synchronizing Resources) is a programming language designed for concurrent programming. ...


Real and pseudo- concurrent programming

Real concurrent programming involves multiple processing elements (Microprocessor or Microcontroller). In this case two or more threads are really executed in parallel. Pseudo Concurrent Programming involves only one processing element (for example a single core microprocessor). In this case there is only one thread that is actually being executed at any given moment. Image File history File links Question_book-3. ... A microprocessor is a programmable digital electronic component that incorporates the functions of a central processing unit (CPU) on a single semiconducting integrated circuit (IC). ... It has been suggested that this article or section be merged with embedded microprocessor. ... For other uses, see Thread. ...


Models of concurrency

There are several models of concurrent computing, which can be used to understand and analyze concurrent systems. These models include: Image File history File links Mergefrom. ... It has been suggested that this article or section be merged into Concurrent computing. ...

In computer science, the Actor model is a mathematical model of concurrent computation that treats actors as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to... A Petri net is a mathematical representation of discrete distributed systems. ... In the first half of the 20th century, various formalisms were proposed to capture the informal concept of computable function, μ-recursive functions, Turing Machines and the lambda calculus possibly being the most well-known examples today. ... Ambient calculus is a form of notation devised by Luca Cardelli and Andrew D. Gordon in 1998 and used to describe and theorise about mobile systems. ... The Calculus of Communicating Systems (or CCS) (one of the first process calculi) was developed by Robin Milner. ... In computer science, Communicating Sequential Processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. ... In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ...

See also

In computer science, message passing programming, as opposed to imperative programming, is a programming paradigm that describes computation in terms of communicating messages among senders and recipients that have local state as opposed to operations that change a global state. ... To meet Wikipedias quality standards, this article or section may require cleanup. ... A race condition or race hazard is a flaw in a system or process whereby the output of the process is unexpectedly and critically dependent on the sequence or timing of other events. ... In computer programming a critical section is a piece of code that can only be executed by one process or thread at a time. ... In computer science, transaction processing is information processing that is divided into individual, indivisible operations, called Each transaction must succeed or fail as a complete unit; it cannot remain in an intermediate state. ... In computer science, flow-based programming (FBP) is a programming paradigm that defines applications as networks of black box processes, which exchange data across predefined connections. ...

Bibliography

  • Filman, Robert E.; Daniel P. Friedman. Coordinated Computing: Tools and Techniques for Distributed Software origyear=1984. New York: McGraw-Hill, 370. ISBN 0-07-022439-0. 
  • Taubenfeld, Gadi (2006). Synchronization Algorithms and Concurrent Programming. Pearson / Prentice Hall, 433. ISBN 0131972596. 

External links

  • Concurrent Systems Virtual Library
  • Paper "How Multi-User Workload Inhibits Performance Scalability" by Peter Thanisch

  Results from FactBites:
 
Concurrent computing - Wikipedia, the free encyclopedia (916 words)
Concurrent computing is related to parallel computing, but focuses more on the interactions between tasks.
In some concurrent computing systems communication between the concurrent components is hidden from the programmer (e.g., by using futures), while in others it must be handled explicitly.
Because concurrent systems rely on the use of shared resources (including communications mediums), concurrent computing in general requires the use of some form of arbiter somewhere in the implementation to mediate access to these resources.
Parallel computing - Wikipedia, the free encyclopedia (1377 words)
Parallel computing is the simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain results faster.
A parallel computing system is a computer with more than one processor for parallel processing.
Parallel computation is used for tasks which require very large amounts of computation, take a lot of time, and can be divided into n independent subtasks.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.