Samtidighed

(c) Benjamin D. Esham / Wikimedia Commons, CC BY-SA 3.0
De spisende filosoffer er et klassisk problem, der involverer samtidighed og delte resurser.

Indenfor datalogi er samtidighed muligheden for forskellige dele eller enheder af et computerprogram, algoritme eller problem til at blive udført i uorden eller i delvis rækkefølge, uden at påvirke resultatet. Dette giver mulighed for parallel eksekvering af de samtidige enheder, hvilket væsentligt kan forbedre den samlede hastighed af udførelsen i flerprocessor og flerkerne systemer. I mere tekniske termer refererer samtidighed til nedbrydeligheden af et program, en algoritme eller et problem i rækkefølgeuafhængige eller delvist ordnede komponenter eller beregningsenheder.[1]

Ifølge Rob Pike er samtidighed sammensætningen af uafhængigt eksekverende beregninger,[2] og samtidighed er ikke parallelisme: samtidighed handler om at håndtere mange ting på én gang, men parallelisme handler om at gøre mange ting på én gang. Samtidighed handler om struktur, parallelisme handler om udførelse, samtidighed giver en måde at strukturere en løsning på for at løse et problem, der kan (men ikke nødvendigvis) kan paralleliseres.[3]

En række matematiske modeller er blevet udviklet til generel samtidig beregning, herunder Petri-net, proces calculi, parallel tilfældig adgangsmaskinemodel, aktørmodellen og Reo Coordination Language.

Referencer

  1. ^ Lamport, Leslie (juli 1978). "Time, Clocks, and the Ordering of Events in a Distributed System" (PDF). Communications of the ACM. 21 (7): 558-565. doi:10.1145/359545.359563. S2CID 215822405. Hentet 4. februar 2016.
  2. ^ "Go Concurrency Patterns". talks.golang.org. Hentet 2021-04-08.
  3. ^ "Concurrency is not Parallelism". talks.golang.org. Hentet 2021-04-08.

Yderligere læsning

  • Lynch, Nancy A. (1996). Distributed Algorithms. Morgan Kaufmann. ISBN 978-1-55860-348-6.
  • Tanenbaum, Andrew S.; Van Steen, Maarten (2002). Distributed Systems: Principles and Paradigms. Prentice Hall. ISBN 978-0-13-088893-8.
  • Kurki-Suonio, Reino (2005). A Practical Theory of Reactive Systems. Springer. ISBN 978-3-540-23342-8.
  • Garg, Vijay K. (2002). Elements of Distributed Computing. Wiley-IEEE Press. ISBN 978-0-471-03600-5.
  • Magee, Jeff; Kramer, Jeff (2006). Concurrency: State Models and Java Programming. Wiley. ISBN 978-0-470-09355-9.
  • Distefano, S., & Bruneo, D. (2015). Quantitative assessments of distributed systems: Methodologies and techniques (1st ed.). Somerset: John Wiley & Sons Inc.ISBN 9781119131144
  • Bhattacharyya, S. S. (2013;2014;). Handbook of signal processing systems (Second;2;2nd 2013; ed.). New York, NY: Springer.10.1007/978-1-4614-6859-2 ISBN 9781461468592
  • Wolter, K. (2012;2014;). Resilience assessment and evaluation of computing systems (1. Aufl.;1; ed.). London;Berlin;: Springer. ISBN 9783642290329

Eksterne henvisninger

Medier brugt på denne side

An illustration of the dining philosophers problem.png
(c) Benjamin D. Esham / Wikimedia Commons, CC BY-SA 3.0

An illustration of the dining philosophers problem.

Philosophers clockwise from top - Plato, Konfuzius, Socrates, Voltaire and Descartes.