Channel внутри — структура hchan: circular buffer (для буферизованных), два linked list для ожидающих отправителей и получателей (sendq/recvq), и мьютекс. При send: если есть ожидающий receiver — данные копируются напрямую в его стек (fast path, без буфера). Если буфер не полон — копируем в буфер. Если полон — горутина паркуется в sendq. При receive — зеркально. Прямое копирование в стек получателя — крутая оптимизация: ноль аллокаций, ноль лишних копирований. Закрытие канала будит всех ожидающих.
Как работает channel send/receive под капотом?
Senior
513 просмотровAFK Offer AI
Что такое namespace в Linux?