Share
VIDEOS 1 TO 50
Concurrency vs. Parallelism
Concurrency vs. Parallelism
Published: 2015/10/04
Channel: Dave Xiang
Concurrency (computer science)
Concurrency (computer science)
Published: 2014/11/19
Channel: Audiopedia
Concurrency and Race Conditions: Programming in Scratch 2.0
Concurrency and Race Conditions: Programming in Scratch 2.0
Published: 2013/07/11
Channel: colleen lewis
Concurrency (computer science)
Concurrency (computer science)
Published: 2016/01/22
Channel: WikiAudio
Laws of Programming with Concurrency
Laws of Programming with Concurrency
Published: 2016/06/27
Channel: Microsoft Research
C++11 Concurrency, Part 1
C++11 Concurrency, Part 1
Published: 2012/02/08
Channel: Bartosz Milewski
Concurrency in Go
Concurrency in Go
Published: 2015/04/14
Channel: jwhite303
Why Concurrency Is Hard
Why Concurrency Is Hard
Published: 2016/02/14
Channel: Chris Hawkes
Concurrency & Computer Games
Concurrency & Computer Games
Published: 2012/05/18
Channel: McGill University
Verified Concurrent Programmes: Laws of Programming with Concurrency
Verified Concurrent Programmes: Laws of Programming with Concurrency
Published: 2016/08/09
Channel: Microsoft Research
The Laws of Programming with Concurrency
The Laws of Programming with Concurrency
Published: 2016/06/22
Channel: Microsoft Research
Golang Concurrency
Golang Concurrency
Published: 2015/11/14
Channel: Todd McLeod
Advanced Topics in Programming Languages: The Java Memory Model
Advanced Topics in Programming Languages: The Java Memory Model
Published: 2012/08/22
Channel: GoogleTalksArchive
Concurrent Programming Cambridge Computer Science Texts
Concurrent Programming Cambridge Computer Science Texts
Published: 2017/02/28
Channel: E. Baldovin
CppCon 2016: Fedor Pikus “The speed of concurrency (is lock-free faster?)"
CppCon 2016: Fedor Pikus “The speed of concurrency (is lock-free faster?)"
Published: 2016/10/05
Channel: CppCon
Introduction to Concurrency Theory Transition Systems and CCS Texts in Theoretical Computer Science
Introduction to Concurrency Theory Transition Systems and CCS Texts in Theoretical Computer Science
Published: 2016/04/02
Channel: zubian
Introduction to Concurrency Theory Transition Systems and CCS Texts in Theoretical Computer Science
Introduction to Concurrency Theory Transition Systems and CCS Texts in Theoretical Computer Science
Published: 2016/04/25
Channel: anderson
What is CONCURRENCY CONTROL? What does CONCURRENCY CONTROL mean? CONCURRENCY CONTROL meaning
What is CONCURRENCY CONTROL? What does CONCURRENCY CONTROL mean? CONCURRENCY CONTROL meaning
Published: 2017/02/23
Channel: The Audiopedia
C++11 Concurrency, Part 3
C++11 Concurrency, Part 3
Published: 2012/02/17
Channel: Bartosz Milewski
Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know...)
Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know...)
Published: 2012/11/21
Channel: jasonofthel33t
Cocoa Concurrency L1 - Intro
Cocoa Concurrency L1 - Intro
Published: 2014/06/08
Channel: AppleProgramming
Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak
Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak
Published: 2012/08/22
Channel: GoogleTalksArchive
Concurrency and Strong Types for IoT - Carl Hewitt
Concurrency and Strong Types for IoT - Carl Hewitt
Published: 2017/04/03
Channel: Erlang Solutions
C++ Threading #1:  Introduction
C++ Threading #1: Introduction
Published: 2013/04/30
Channel: Bo Qian
Concurrency Primitive  Parallel For
Concurrency Primitive Parallel For
Published: 2015/02/23
Channel: Udacity
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Published: 2016/12/24
Channel: cracie
Java Concurrency - Condition
Java Concurrency - Condition
Published: 2016/05/05
Channel: 100bytes.com
C++11 Concurrency, Part 6
C++11 Concurrency, Part 6
Published: 2012/03/05
Channel: Bartosz Milewski
Introduction computer science Mobile app from Enisei-Studio
Introduction computer science Mobile app from Enisei-Studio
Published: 2017/04/08
Channel: HowtoUse World apps
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Published: 2016/11/21
Channel: armando
11 Erlang - Basic Concurrency
11 Erlang - Basic Concurrency
Published: 2013/01/13
Channel: UXLearner
Philly ETE 2015 #27 - core.async: Concurrency without Callbacks - Stuart Halloway
Philly ETE 2015 #27 - core.async: Concurrency without Callbacks - Stuart Halloway
Published: 2015/06/13
Channel: ChariotSolutions
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Logics for Concurrency Structure versus Automata Lecture Notes in Computer Science
Published: 2016/11/23
Channel: ellia
Concurrency by Data Structures - GopherConIndia 2015
Concurrency by Data Structures - GopherConIndia 2015
Published: 2015/03/11
Channel: GopherConIndia
Transactions on Petri Nets and Other Models of Concurrency VII Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency VII Lecture Notes in Computer Science
Published: 2016/11/22
Channel: margarita
Transactions on Petri Nets and Other Models of Concurrency IV Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency IV Lecture Notes in Computer Science
Published: 2017/01/19
Channel: dastine
Effective Python: Working with Concurrency and Parallelism
Effective Python: Working with Concurrency and Parallelism
Published: 2015/09/19
Channel: LiveLessons
Transactions on Petri Nets and Other Models of Concurrency VII Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency VII Lecture Notes in Computer Science
Published: 2016/12/20
Channel: chloe
Transactional Information Systems  Theory, Algorithms, and the Practice of Concurrency Control and R
Transactional Information Systems Theory, Algorithms, and the Practice of Concurrency Control and R
Published: 2017/02/28
Channel: Rob Rook
Introduction to C++ Concurrency: Start a Thread with std::async
Introduction to C++ Concurrency: Start a Thread with std::async
Published: 2014/10/19
Channel: LiveLessons
Lecture 14. Android Concurrency and Synchronization (part 10)
Lecture 14. Android Concurrency and Synchronization (part 10)
Published: 2013/10/08
Channel: Douglas Schmidt
Download Transactional Information Systems Theory Algorithms and the Practice of Concurrency Control
Download Transactional Information Systems Theory Algorithms and the Practice of Concurrency Control
Published: 2016/12/05
Channel: D. Pascale
Transactions on Petri Nets and Other Models of Concurrency VI Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency VI Lecture Notes in Computer Science
Published: 2016/12/08
Channel: michelle
Transactions on Petri Nets and Other Models of Concurrency VI Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency VI Lecture Notes in Computer Science
Published: 2016/12/26
Channel: brink
Transactions on Petri Nets and Other Models of Concurrency I Lecture Notes in Computer Science
Transactions on Petri Nets and Other Models of Concurrency I Lecture Notes in Computer Science
Published: 2016/12/08
Channel: michelle
C++11 Concurrency, Part 4
C++11 Concurrency, Part 4
Published: 2012/02/19
Channel: Bartosz Milewski
Safe and Scalable Concurrent Programming in Scala - Philipp Haller
Safe and Scalable Concurrent Programming in Scala - Philipp Haller
Published: 2016/12/01
Channel: RISE SICS
Threading and Concurrency with Grand Central Dispatch and Swift 2.0
Threading and Concurrency with Grand Central Dispatch and Swift 2.0
Published: 2015/12/04
Channel: Andrew Barba
Ian Spink - Critical Analysis of Concurrency in AI
Ian Spink - Critical Analysis of Concurrency in AI
Published: 2013/10/16
Channel: Gary Unthank
Introduction to C++ Concurrency: Fork Multiple Threads
Introduction to C++ Concurrency: Fork Multiple Threads
Published: 2014/10/19
Channel: LiveLessons
NEXT
GO TO RESULTS [51 .. 100]

WIKIPEDIA ARTICLE

From Wikipedia, the free encyclopedia
Jump to: navigation, search
The "Dining Philosophers", a classic problem involving concurrency and shared resources

In computer science, concurrency is the decomposability property of a program, algorithm, or problem into order-independent or partially-ordered components or units.[1] This means that even if the concurrent units of the program, algorithm, or problem are executed out-of-order or in partial order, the final outcome will remain the same. 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.

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.

History[edit]

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,”.[2]

Issues[edit]

Because computations in a concurrent system can interact with each other while being executed, 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 deadlocks, and resource starvation.[3]

Design of concurrent systems often entails finding reliable techniques for coordinating their execution, data exchange, memory allocation, and execution scheduling to minimize response time and maximise throughput.[4]

Theory[edit]

Concurrency theory has been an active field of research in theoretical computer science. One of the first proposals was Carl Adam Petri's seminal work on Petri Nets in the early 1960s. In the years since, a wide variety of formalisms have been developed for modeling and reasoning about concurrency.

Models[edit]

A number of formalisms for modeling and understanding concurrent systems have been developed, including:[5]

Some of these models of concurrency are primarily intended to support reasoning and specification, while others can be used through the entire development cycle, including design, implementation, proof, testing and simulation of concurrent systems. Some of these are based on message passing, while others have different mechanisms for concurrency.

The proliferation of different models of concurrency has motivated some researchers to develop ways to unify these different theoretical models. 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,[7] while Nielsen, Sassone, and Winskel have demonstrated that category theory can be used to provide a similar unified understanding of different models.[8]

The Concurrency Representation Theorem in the Actor model provides a fairly general way to represent concurrent systems that are closed in the sense that they do not receive communications from outside. (Other concurrency systems, e.g., process calculi can be modeled in the Actor model using a two-phase commit protocol.[9]) The mathematical denotation denoted by a closed system S is constructed increasingly better approximations from an initial behavior called S using a behavior approximating function progressionS to construct a denotation (meaning ) for S as follows:[10]

DenoteS ≡ ⊔i∈ω progressionSi(⊥S)

In this way, S can be mathematically characterized in terms of all its possible behaviors.

Logics[edit]

Various types of temporal logic[11] can be used to help reason about concurrent systems. Some of these logics, such as linear temporal logic and computational tree logic, allow assertions to be made about the sequences of states that a concurrent system can pass through. 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). The principal application of these logics is in writing specifications for concurrent systems.[3]

Practice[edit]

Concurrent programming encompasses programming languages and algorithms used to implement concurrent systems. Concurrent programming is usually considered to be more general than parallel programming because it can involve arbitrary and dynamic patterns of communication and interaction, whereas parallel systems generally have a predefined and well-structured communications pattern. The base goals of concurrent programming include correctness, performance and robustness. 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). Some concurrent systems implement a form of transparent concurrency, in which concurrent computational entities may compete for and share a single resource, but the complexities of this competition and sharing are shielded from the programmer.

Because they use shared resources, concurrent systems in general require the inclusion of some kind of arbiter somewhere in their implementation (often in the underlying hardware), to control access to those resources. The use of arbiters introduces the possibility of indeterminacy in concurrent computation which has major implications for practice including correctness and performance. 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.

Some concurrent programming models include coprocesses and deterministic concurrency. In these models, threads of control explicitly yield their timeslices, either to the system or to another process.

See also[edit]

References[edit]

  1. ^ Lamport, Leslie (July 1978). "Time, Clocks, and the Ordering of Events in a Distributed System" (PDF). Communications of the ACM. Retrieved 4 February 2016. 
  2. ^ Lamport, Leslie. "Turing Lecture: The Computer Science of Concurrency: The Early Years (Communications of the ACM, Vol. 58 No. 6, June 2015)". ACM. Retrieved 22 Mar 2017. 
  3. ^ a b Cleaveland, Rance; Scott Smolka (December 1996). "Strategic Directions in Concurrency Research". ACM Computing Surveys. 28 (4): 607. doi:10.1145/242223.242252. 
  4. ^ Campbell, Colin; Johnson, Ralph; Miller, Ade; Toub, Stephen (August 2010). Parallel Programming with Microsoft .NET. Microsoft Press. ISBN 978-0-7356-5159-3. 
  5. ^ Filman, Robert; Daniel Friedman (1984). Coordinated Computing - Tools and Techniques for Distributed Software. McGraw-Hill. ISBN 0-07-022439-0. 
  6. ^ Keller, Jörg; Christoph Keßler; Jesper Träff (2001). Practical PRAM Programming. John Wiley and Sons. 
  7. ^ Lee, Edward; Alberto Sangiovanni-Vincentelli (December 1998). "A Framework for Comparing Models of Computation". IEEE Transactions on CAD. 17 (12): 1217–1229. doi:10.1109/43.736561. 
  8. ^ Mogens Nielsen; Vladimiro Sassone; Glynn Winskel (1993). "Relationships Between Models of Concurrency". REX School/Symposium. 
  9. ^ Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992.
  10. ^ William Clinger (June 1981). "Foundations of Actor Semantics". Mathematics Doctoral Dissertation. MIT. 
  11. ^ Roscoe, Colin (2001). Modal and Temporal Properties of Processes. Springer. ISBN 0-387-98717-7. 

Further reading[edit]

  • Lynch, Nancy A. (1996). Distributed Algorithms. Morgan Kauffman. ISBN 1-55860-348-4. 
  • Tanenbaum, Andrew S.; Van Steen, Maarten (2002). Distributed Systems: Principles and Paradigms. Prentice Hall. ISBN 0-13-088893-1. 
  • Kurki-Suonio, Reino (2005). A Practical Theory of Reactive Systems. Springer. ISBN 3-540-23342-3. 
  • Garg, Vijay K. (2002). Elements of Distributed Computing. Wiley-IEEE Press. ISBN 0-471-03600-5. 
  • Magee, Jeff; Kramer, Jeff (2006). Concurrency: State Models and Java Programming. Wiley. ISBN 0-470-09355-2. 

External links[edit]

Disclaimer

None of the audio/visual content is hosted on this site. All media is embedded from other sites such as GoogleVideo, Wikipedia, YouTube etc. Therefore, this site has no control over the copyright issues of the streaming media.

All issues concerning copyright violations should be aimed at the sites hosting the material. This site does not host any of the streaming media and the owner has not uploaded any of the material to the video hosting servers. Anyone can find the same content on Google Video or YouTube by themselves.

The owner of this site cannot know which documentaries are in public domain, which has been uploaded to e.g. YouTube by the owner and which has been uploaded without permission. The copyright owner must contact the source if he wants his material off the Internet completely.

Powered by YouTube
Wikipedia content is licensed under the GFDL and (CC) license