Sobes.tech
Middle

Ինչպե՞ս է մրցակցությունը տարբերվում հոսքիից։

sobes.tech AI

Պատասխան AI-ից

Ռեկուրռտություն — դա համակարգի կարողությունն է կառավարել մի քանի առաջադրանք, որոնք կարող են մասնակիորեն միաժամանակ կատարվել, անցնելով դրանց միջև։ Պարալելիզմը՝ դա այդ առաջադրանքների միաժամանակյա կատարմամբ է տարբեր պրոցեսորային միջուկներում։

Պարզ ասած, ռեկուրռտությունը վերաբերում է աշխատանքի կազմակերպմանը, որպեսզի մի քանի առաջադրանք կարողանան առաջ գնալ, իսկ պարալելիզմը՝ դրանց միաժամանակյա կատարմանը։

Go-ում ռեկուրռտությունը հասնում է goroutines և ալիքների միջոցով, իսկ պարալելիզմը՝ երբ այդ goroutines-ները իրականում միաժամանակ կատարվում են տարբեր միջուկներում։

Օրինակ ռեկուրռտության՝ Go-ում:

package main
import (
    "fmt"
    "time"
)
func task(name string) {
    for i := 0; i < 3; i++ {
        fmt.Println(name, "քայլ", i)
        time.Sleep(100 * time.Millisecond)
    }
}
func main() {
    go task("A")
    go task("B")
    time.Sleep(500 * time.Millisecond)
}

Այստեղ, "A" և "B" առաջադրանքները կատարվում են մրցակցությամբ, փոխարինելով մեկը մյուսին, և եթե դրանք գործարկվեն բազմակողմանի պրոցեսորում, կարող են կատարվել միաժամանակ։