Go реализует конкурентность через горутины и каналы. Горутины — легковесные потоки (2-8 КБ стека), которые планировщик Go мультиплексирует на OS-потоки по модели M:N (M горутин на N потоков).
Планировщик использует модель GMP: G — горутина, M — OS-поток, P — процессор (по умолчанию = GOMAXPROCS = количеству ядер). Каждый P имеет локальную очередь горутин + есть глобальная очередь. Используется work stealing — свободный P крадёт горутины у занятого.
Синхронизация: каналы (CSP-стиль), sync.Mutex, sync.WaitGroup, sync/atomic. Философия Go: «Don't communicate by sharing memory; share memory by communicating».