Как реализован select на уровне runtime?

Senior
75 просмотров
AFK Offer AI

select компилируется в вызов runtime.selectgo. Все каналы лочатся в определённом порядке (по адресу, для избежания deadlock). Проверяются готовые case. Если готовых нет и нет default — горутина добавляется в очереди всех каналов и паркуется. При пробуждении — удаляется из остальных очередей. Рандомный порядок через shuffle массива case.

Следующий вопрос

Что такое pgtype для PostgreSQL?