Sobes.tech
Junior — Middle

Оё имкон дорад, ки шумораи ҷараёнҳо аз шумораи ядрои процессор зиёд шавад?

sobes.tech AI

Ҷавоб аз AI

Бале, чунин ҳолат имконпазир аст. Дар Go (Golang) шумораи goroutine-ҳо метавонад назар ба шумораи ядроҳои физикии CPU назар ба он зиёд бошад. Goroutine-ҳо сабуквориҳои равандҳои хурд мебошанд, ки аз ҷониби runtime-и Go идора мешаванд, ва метавонанд ҳазорҳо ё ҳатто миллионҳо бошанд, дар ҳоле ки шумораи ядроҳо одатан бо дастгоҳ маҳдуд аст.

Runtime-и Go иҷрои goroutine-ҳоро дар системҳои дастрас нақша мекунад, ки ба навбати худ дар ядроҳои процессор тақсим мешаванд. Бинобар ин, шумораи goroutine-ҳо бо шумораи ядроҳо маҳдуд нест, балки бо захираҳои система (хотира ва вақти CPU) маҳдуд аст. Ин имкон медиҳад, ки истифодаи самараноки бисёркорӣ ва параллелизмро таъмин кунад.

Масалан:

package main

import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Корманди %d оғоз ёфт\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Корманди %d анҷом ёфт\n", id)
}

func main() {
    for i := 0; i < 1000; i++ {
        go worker(i) // оғоз кардани 1000 goroutine
    }
    time.Sleep(2 * time.Second) // интизорӣ барои анҷом додан
}

Ин ҷо 1000 goroutine эҷод мешавад, ки хеле бештар аз шумораи ядроҳо аст, аммо барнома дуруст кор мекунад.