Go
69 notes
Some notes are currently available only in Chinese. English translations are shown when available.
- 2.8 sync.Mutexhistorical
What Mutex is and examples showing the difference between unsynchronized access and access protected by sync.Mutex.
- 2.9 sync.RWMutexhistorical
What sync.RWMutex is and an example using write locks and read locks around a shared map.
- 2.10 sync.Condhistorical
What sync.Cond is, Wait/Broadcast/Signal semantics, and a blocking-queue example using condition variables.
- 2.11 atomichistorical
What atomicity is, what atomic.Value is, how to use it, and the implementation of Store and Load.
- 2.12 channelhistorical
CSP concurrency model, channel usage and closing patterns, happens-before, hchan internals, creation, receive, send, close, and references.
- 2.13 concurrenthistorical
Goroutine and channel, the sync package, synchronization, happens-before rules, concurrency patterns, and multi-core CPU references.
- 2.14 goroutinehistorical
What a goroutine is, how to create one, how go f(args) maps to runtime.newproc, goroutine pools, and GMP scheduling.
- 2.15 Goroutine Poolhistorical
What a goroutine pool is, why it is usually unnecessary, and two example designs for reusing goroutines.
- 3.1 GMPhistorical
Goroutine scheduler, GM model, GMP model, P/M/G, goroutine creation flow, preemptive scheduling, and references.
- 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.