Как можно управлять количеством потоков, используемых для выполнения горутин?

В Go количество потоков ОС, используемых для выполнения горутин, управляется с помощью функции runtime.GOMAXPROCS(n).

Короткий ответ

Что ответить на собеседовании

В Go количество потоков ОС, используемых для выполнения горутин, управляется с помощью функции runtime.GOMAXPROCS(n). Эта функция задаёт максимальное количество операционных системных потоков, которые могут одновременно выполнять пользовательский код Go.

Подробный разбор

Ответ с пояснениями

В Go количество потоков ОС, используемых для выполнения горутин, управляется с помощью функции runtime.GOMAXPROCS(n). Эта функция задаёт максимальное количество операционных системных потоков, которые могут одновременно выполнять пользовательский код Go.

По умолчанию GOMAXPROCS равен количеству логических процессоров на машине. Изменение этого значения позволяет контролировать параллелизм программы.

Пример:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    fmt.Println("Default GOMAXPROCS:", runtime.GOMAXPROCS(0)) // Получить текущее значение
    runtime.GOMAXPROCS(2) // Установить максимум в 2 потока
    fmt.Println("Updated GOMAXPROCS:", runtime.GOMAXPROCS(0))
}

Важно понимать, что GOMAXPROCS влияет на параллельное выполнение горутин, но не ограничивает их количество — горутин может быть тысячи, они планируются на доступные потоки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее