1. 2.8 sync.Mutexhistorical

    What Mutex is and examples showing the difference between unsynchronized access and access protected by sync.Mutex.

  2. 2.9 sync.RWMutexhistorical

    What sync.RWMutex is and an example using write locks and read locks around a shared map.

  3. 2.10 sync.Condhistorical

    What sync.Cond is, Wait/Broadcast/Signal semantics, and a blocking-queue example using condition variables.

  4. 2.11 atomichistorical

    What atomicity is, what atomic.Value is, how to use it, and the implementation of Store and Load.

  5. 2.12 channelhistorical

    CSP concurrency model, channel usage and closing patterns, happens-before, hchan internals, creation, receive, send, close, and references.

  6. 2.13 concurrenthistorical

    Goroutine and channel, the sync package, synchronization, happens-before rules, concurrency patterns, and multi-core CPU references.

  7. 2.14 goroutinehistorical

    What a goroutine is, how to create one, how go f(args) maps to runtime.newproc, goroutine pools, and GMP scheduling.

  8. 2.15 Goroutine Poolhistorical

    What a goroutine pool is, why it is usually unnecessary, and two example designs for reusing goroutines.

  9. 3.1 GMPhistorical

    Goroutine scheduler, GM model, GMP model, P/M/G, goroutine creation flow, preemptive scheduling, and references.

  10. 3.2 Escape Analysishistorical

    How Go uses escape analysis to decide whether values created with new are allocated on the heap or stack, why escape analysis matters, and a compiler-output example.