@beduin01

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

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

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

Войти через центр авторизации
Похожие вопросы