Нет, на каждую горутину в Go не создаётся отдельный поток операционной системы. Горутину можно рассматривать как лёгкую нить (lightweight thread), которая управляется планировщиком Go (runtime scheduler).
Создаётся ли на каждую горутину новый поток операционной системы?
Нет, на каждую горутину в Go не создаётся отдельный поток операционной системы. Горутину можно рассматривать как лёгкую нить (lightweight thread), которая управляется планировщиком Go (runtime scheduler).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нет, на каждую горутину в Go не создаётся отдельный поток операционной системы. Горутину можно рассматривать как лёгкую нить (lightweight thread), которая управляется планировщиком Go (runtime scheduler).
Go runtime использует модель M:N, где M — количество потоков ОС, а N — количество горутин. Планировщик распределяет множество горутин на меньшее число потоков ОС, эффективно используя системные ресурсы.
Это позволяет создавать тысячи и даже миллионы горутин без значительных накладных расходов, в отличие от системных потоков, которые более тяжеловесны.
Таким образом, горутины — это кооперативно планируемые задачи внутри одного или нескольких потоков ОС, а не 1:1 соответствие.