РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1549 of 1593 menu

Функция runtime.GOMAXPROCS

Функция runtime.GOMAXPROCS управляет количеством потоков операционной системы (OS threads), которые могут одновременно выполнять код Go. Она принимает один параметр типа int - новое значение для максимального количества потоков. Если параметр равен 0, функция не изменяет текущее значение, а только возвращает предыдущее. Возвращаемое значение - количество потоков, установленное ранее.

Синтаксис

prev := runtime.GOMAXPROCS(n)

Пример с получением текущего значения

Давайте получим текущее значение GOMAXPROCS, передав в функцию аргумент 0:

package main import ( "fmt" "runtime" ) func main() { cpus := runtime.GOMAXPROCS(0) fmt.Println(cpus) }

Результат выполнения кода:

"4"

Пример с установкой нового значения

Давайте установим новое значение GOMAXPROCS и проверим, что оно изменилось:

package main import ( "fmt" "runtime" ) func main() { prev := runtime.GOMAXPROCS(2) fmt.Println("Previous value:", prev) curr := runtime.GOMAXPROCS(0) fmt.Println("Current value:", curr) }

Результат выполнения кода:

"Previous value: 4" "Current value: 2"

Пример с использованием в параллельных вычислениях

Давайте посмотрим, как изменение GOMAXPROCS влияет на параллельное выполнение горутин:

package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(2) var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(id int) { defer wg.Done() fmt.Printf("Goroutine %d started\n", id) }(i) } wg.Wait() fmt.Println("All goroutines finished") }

Результат выполнения кода:

"Goroutine 4 started" "Goroutine 2 started" "Goroutine 0 started" "Goroutine 3 started" "Goroutine 1 started" "All goroutines finished"

Смотрите также

  • функцию runtime.NumCPU,
    которая возвращает количество логических процессоров в системе
  • функцию runtime.NumGoroutine,
    которая возвращает количество активных горутин
  • функцию runtime.Gosched,
    которая передает управление другим горутинам
  • функцию runtime.GC,
    которая запускает сборку мусора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить