Skip to content

Latest commit

 

History

History
21 lines (13 loc) · 1.28 KB

README.md

File metadata and controls

21 lines (13 loc) · 1.28 KB

Concurrent Computing

A critical section is a piece of code that accesses a shared resource, usually a variable or data structure.

A race condition (or data race) arises if multiple threads of execution enter the critical section at roughly the same time; both attempt to update the shared data structure, leading to a surprising (and perhaps undesirable) outcome.

An indeterminate program consists of one or more race conditions; the output of the program varies from run to run, depending on which threads ran when. The outcome is thus not deterministic, something we usually expect from computer systems.

To avoid these problems, threads should use some kind of mutual exclusion primitives; doing so guarantees that only a single thread ever enters a critical section, thus avoiding races, and resulting in deterministic program outputs.1

Synchronization

Wikipedia

Synchronization is a mechanism which ensures that two or more concurrent processes or threads do not simultaneously execute some particular program segment known as critical section.

Information sources

Books:

  • Operating Systems: Three Easy Pieces (Part II)
  • The Little Book of Semaphores

Footnotes

  1. Operating Systems: Three Easy Pieces