Задать вопрос
@beduin01

Как работают гоурутины в Go?

1. Правильно ли я понимаю, что горутина выполняет какую-то элементарную операцию (или блок кода) после чего вызывается функция yield и начинает выполняться следующая горутина?
2. Правильно ли я понимаю, что любая блокирующая операция (вплоть до операции с памятью) после своего старта вызывает yield, чтобы переключиться на другую горутину?
3. Правильно ли я понимаю, что все блокирующие операции делегируются на системные треды в которых они выполняются. К примеру операция чтения файла блокирующая. Значит она скидывается в системный тред где происходит чтение и потом выполняется кол-бек? Системные треды Go сам создает? Или как оно там происходит?
  • Вопрос задан
  • 542 просмотра
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Нетология
    Go-разработчик с нуля
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Го обычно создает треды по количеству ядер процессора (можно изменить с помощью переменной GOMAXPROC). Горутины раскидываются между ними, так что даже элементарный код может работать параллельно в разных тредах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы