liveBook · Manning

Sync package

The sync package is Go’s standard-library package providing synchronization primitives for coordinating concurrent execution and protecting shared data.

How 3 Manning books explain it

100 Go Mistakes and How to Avoid Them

The sync package is a Go standard-library package providing synchronization primitives for coordinating concurrent execution and protecting shared state.

How it is used
Coordinates goroutines protecting shared state or waiting for updates, while guarding against copied synchronization values.
How deep it goes
Works through a condition-variable implementation and a copied-mutex data race, then gives receiver and field-type fixes.
Examples
Contrasts donation-goal listeners using a busy loop, channel, and sync.Cond; tests a counter with a copied mutex.
What you can do after
Diagnose/debug with it by recognizing copied locks and missed channel notifications, then choosing a shared lock or sync.Cond.

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

Learn Go with Pocket-Sized Projects

sync is Go's standard-library package providing synchronization primitives such as mutexes, wait groups, and once-only execution controls.

How it is used
Coordinates goroutines and provides a synchronization point before the program continues or exits.
How deep it goes
Explains WaitGroup construction, Add, Done, Wait, deferred cleanup, and pointer semantics, but does not detail other sync types.
Examples
Demonstrates cooking rice and curry concurrently, including an error-channel variant and an errgroup.Group variant.
What you can do after
Apply it via Go's sync.WaitGroup to wait reliably for launched goroutines to complete.

Read how Learn Go with Pocket-Sized Projects explains sync package →

Learn Concurrent Programming with Go

sync is a Go standard-library package that provides synchronization primitives and related concurrency utilities.

How it is used
Protects shared variables when concurrent goroutines must update or read them safely.
How deep it goes
Defines mutual exclusion and demonstrates Lock and Unlock, stopping short of broader synchronization utilities.
Examples
Uses concurrent Stingy and Spendy functions to protect repeated additions and subtractions from a shared account balance.
What you can do after
Apply it via Go’s sync.Mutex to serialize access to shared state and avoid race conditions.

Read how Learn Concurrent Programming with Go explains sync package →

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.