Ответ
Многопоточность — это способ выполнения нескольких потоков (threads) внутри одного процесса параллельно или псевдопараллельно. Потоки разделяют общую память процесса, что упрощает обмен данными, но требует синхронизации для избежания гонок (race conditions).
В Go вместо классических потоков используются горутины (goroutines) — легковесные потоки, управляемые рантаймом. Они экономят ресурсы и масштабируются лучше системных потоков.
Пример:
package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(i)
}
}
func main() {
go printNumbers() // запуск горутины
go printNumbers() // ещё одна горутина
time.Sleep(1 * time.Second) // ожидание завершения
}
Ключевые отличия горутин от потоков:
- Запуск тысяч горутин без значительных накладных расходов
- Кооперативная многозадачность (не вытесняющая)
- Каналы (channels) для безопасной коммуникации
Видео-ответы
▶
Собеседование на мидл Python: что спрашивают и как отвечать
▶
Собеседование в VK Middle Python: создаем ленту рекомендаций для соцсети!
▶
Собеседование в МТС: Middle Java разработчик не справился!
▶
Cобеседование в МТС на Middle Java с лайв-кодингом
▶
МОК Собеседование Junior iOS разработчик
▶
Моковое собеседование на Junior Android-разработчика
▶
Из кибер-безопасника в Python разработчики? / Техсобес на позицию Junior Python Developer
▶
Техническое собеседование на позицию Python Junior | Solvery + Moscow Python
▶
Tech Interview Fest | Моковое собеседование для Python Junior | Moscow Python + Solvery
▶
Публичное Собеседование iOS | Alex Ozun, Роман Тысячник | iOS Ukraine #2
▶
Техническое интервью Java Developer - Артем Таужнянский
▶
Техническое интервью Java Developer - Артем Никулин
▶
Публичное собеседование: iOS-разработчик / CocoaHeads Kazakhstan