liveBook · Manning

Synchronization

Synchronization coordinates operations, events, clocks, data, or states to establish required timing, ordering, visibility, or consistency relationships.

How 11 Manning books explain it

Grokking Concurrency

Synchronization is coordination that controls access to shared resources and orders task execution so required exclusivity or dependencies are respected.

How it is used
Coordinates dependent tasks and protects shared resources when concurrent access could produce incorrect results.
How deep it goes
Defines critical sections and compares atomic operations, locks, mutexes, and semaphores without implementing processor-level instructions.
Examples
Uses interleaved printer output and dining philosophers competing for chopsticks to make access rules and lock hazards concrete.
What you can do after
Apply it via Python threading locks to protect shared resources while checking for stalled progress and synchronization costs.

Read how Grokking Concurrency explains synchronization →

Modern C, Third Edition

A synchronization event is an operation or occurrence that coordinates concurrent execution and can establish an ordering relationship between threads.

How it is used
Establishes cross-thread ordering and visibility when reasoning about concurrent C execution.
How deep it goes
Explains atomic modification order and release/acquire library-call pairs, while setting aside consume consistency and dependency-ordered before.
Examples
Traces two threads reading and modifying one atomic variable, then identifies synchronization through thread joins and once-only initialization.
What you can do after
Evaluate/understand cross-thread visibility by identifying observed atomic writes and paired release/acquire library calls.

Read how Modern C, Third Edition explains synchronization →

100 Go Mistakes and How to Avoid Them

Synchronization is the coordination of concurrent execution so that access to shared state occurs according to required ordering or exclusivity constraints.

How it is used
Chooses between exclusive access and goroutine signaling, then replaces timing-based waits in asynchronous tests.
How deep it goes
Defines synchronization through observable guarantees and contrasts channel buffering, but does not work through memory-model rules.
Examples
Traces sends to a capacity-one channel and contrasts a sleeping publisher test with a channel-backed mock.
What you can do after
Apply it via Go mutexes or unbuffered channels to protect shared resources or wait deterministically for publication.

Read how 100 Go Mistakes and How to Avoid Them explains synchronization →

Troubleshooting Java, Second Edition

Thread synchronization is the coordination of concurrent threads to control their access to shared state and operations.

How it is used
Uses synchronization to investigate concurrency failures and protect shared resources during multithreaded execution.
How deep it goes
Demonstrates synchronized blocks and profiler observations, then defers deeper lock relationships to thread dumps and lock profiling.
Examples
Uses Java producer and consumer threads that concurrently modify an ArrayList, comparing failing and synchronized executions in VisualVM.
What you can do after
Diagnose synchronization failures with VisualVM, thread dumps, sampling, and lock profiling, then protect shared access with synchronized blocks.

Read how Troubleshooting Java, Second Edition explains synchronization →

Latency

A synchronization primitive is an execution mechanism that coordinates concurrent operations and controls access to shared resources.

How it is used
Coordinates access to shared data when partitioning cannot eliminate concurrent reads and writes.
How deep it goes
Explains latency trade-offs and outlines locks, atomics, wait-free alternatives, and optimistic-update reconciliation without providing a lock implementation.
Examples
Uses geographic user partitions, request-processing and job queues, and Lamport timestamps exchanged between processes.
What you can do after
Evaluate/understand it by identifying when partitioning avoids coordination and when shared data calls for locks, wait-free techniques, or asynchronous reconciliation.

Read how Latency explains synchronization →

Go in Action, Second Edition

Synchronization is the coordination of concurrent computations to control their interactions and access to shared state.

How it is used
Coordinates goroutine completion and shared-data access so concurrent work does not depend on timing assumptions.
How deep it goes
Explains why waiting by sleep is unreliable and recommends coordination tools, without working through their implementations.
Examples
Uses an RSS reader that fetches two feeds concurrently and waits with time.Sleep to expose the completion problem.
What you can do after
Apply it via channels, WaitGroup, errgroup, or sync mutexes as appropriate, and check for races with go test -race.

Read how Go in Action, Second Edition explains synchronization →

C# Concurrency: Asynchronous and multithreaded programming

Synchronization is the coordination of concurrent operations so that they occur in a controlled sequential order rather than simultaneously.

How it is used
Coordinates shared operations in multithreaded programs when correctness requires controlled sequencing.
How deep it goes
Explains locks, protected regions, waiting, overhead, lock hierarchy, and practical duration trade-offs.
Examples
Uses a C# counter with two threads, five-million increments each, lock protection, thread joining, and a performance diagram.
What you can do after
Diagnose/debug lost updates and synchronization overhead, then choose safer lock boundaries for shared data.

Read how C# Concurrency: Asynchronous and multithreaded programming explains synchronization →

Modern C

Synchronization is the coordination of concurrent execution so that specified operations or events have defined ordering and visibility relationships.

How it is used
Coordinates concurrent execution by establishing ordering and visibility relationships between thread operations.
How deep it goes
Explains release/acquire pairs, transitive visibility, call_once, mutexes, and happens-before reasoning.
Examples
Uses thread creation and joining, detached threads, one-time error-log initialization, and mutex-protected critical sections.
What you can do after
Diagnose/debug with it, reason about cross-thread visibility and ordering through happens-before and synchronization pairs.

Read how Modern C explains synchronization →

Python Concurrency with asyncio

Synchronization is the coordination of concurrent operations to control their ordering and access to shared state.

How it is used
Coordinates concurrent work, protects shared state, limits resource access, and notifies tasks when conditions change.
How deep it goes
Defines race prevention and lock operations, then demonstrates protected updates; it stops short of implementation internals.
Examples
Uses a multiprocessing counter, lock acquisition and release, a context manager, database pools, and vendor request limits.
What you can do after
Apply it via Python multiprocessing and asyncio primitives to protect updates, constrain concurrency, and coordinate tasks.

Read how Python Concurrency with asyncio explains synchronization →

Advanced Algorithms and Data Structures

Synchronization is the coordination of concurrent operations to control access to shared state and preserve required execution properties.

How it is used
Protects shared cache operations from race conditions in a concurrent environment.
How deep it goes
Explains race interleavings, atomicity, locks, and Java implementation choices, but stops short of general synchronization algorithms.
Examples
Uses concurrent LFU cache insertions, capacity checks, lock acquisition, ConcurrentHashMap, and a synchronized heap.
What you can do after
Diagnose race conditions and design lock-protected cache operations using Java concurrency structures.

Read how Advanced Algorithms and Data Structures explains synchronization →

C++ Concurrency in Action, Second Edition

Synchronization is the coordination of operations across threads so their effects are correctly ordered or observed.

How it is used
Coordinates thread operations when one must wait for an event, condition, or another task to finish.
How deep it goes
Surveys coordination facilities and approaches, then works through a parallel-algorithm race and atomic or mutex alternatives.
Examples
Uses parallel for_each calls to contrast independent element updates with a shared counter race.
What you can do after
Diagnose shared-state races in parallel algorithms and restore defined behavior with an atomic or mutex, while recognizing possible serialization.

Read how C++ Concurrency in Action, Second Edition explains synchronization →

Related concepts

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.