Горутины имеют ряд преимуществ:
- Легковесность: Горутины занимают намного меньше памяти (несколько КБ стека по умолчанию по сравнению с МБ для потоков ОС). Это позволяет создавать десятки и сотни тысяч активных горутин.
- Многопоточный планировщик Go: Планировщик горутин Go эффективно распределяет горутины по потокам ОС. Одна горутина, ожидающая операции ввода-вывода, не блокирует выполнение других горутин на том же потоке ОС.
- Простота создания: Горутины создаются с помощью ключевого слова
go, что гораздо проще, чем работать с API потоков ОС.
- Безопасность: Go поддерживает конкурентное выполнение на уровне языка, используя каналы для безопасного обмена данными между горутинами вместо совместного использования памяти и примитивов синхронизации (хотя мьютексы также доступны).
Пример создания горутины:
go