Возможно ли контролировать распределение ядер процессора для выполнения горутин?

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

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

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

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

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

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

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

Однако напрямую привязывать конкретные горутины к определённым ядрам процессора нельзя — это управляется планировщиком Go и операционной системой.

Пример установки количества потоков:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    // Установить использование 4 ядер
    runtime.GOMAXPROCS(4)
    fmt.Println("Максимальное количество потоков:", runtime.GOMAXPROCS(0))
}

Таким образом, вы можете ограничить или увеличить параллелизм, но точное распределение по ядрам контролировать нельзя.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку