Sobes.tech
Junior — Middle

Чӣ гуна кор ва ҳамоҳангсозии сӯрохиҳои иҷро дар Golang таъмин карда мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Go барои кор бо ҷараёнҳои иҷроиш, goroutines (горутиниҳо) истифода мешаванд — ҷараёнҳои сабук, ки аз ҷониби runtime-и Go идора мешаванд. Горутиниҳо бо калимаи go пеш аз даъвати функсия оғоз мешаванд, ки имкон медиҳад онҳо ба таври асинхронӣ иҷро шаванд.

Барои ҳамоҳангсозии goroutines, каналҳо (channels) ва primitives аз пакети sync (масалан, Mutex, WaitGroup) истифода мешаванд. Каналҳо таъмин мекунанд, ки мубодилаи бехатарии маълумот байни goroutines сурат гирад ва онҳоро ҳамоҳанг созанд.

Масали истифодаи goroutines ва каналҳо:

package main

import (
    "fmt"
    "time"
)

func worker(ch chan string) {
    time.Sleep(time.Second)
    ch <- "тамом"
}

func main() {
    ch := make(chan string)
    go worker(ch)
    msg := <-ch
    fmt.Println("Корманди goroutine:", msg)
}

Ин ҷо, goroutine асосӣ worker-ро дар goroutine алоҳида оғоз мекунад, ки пас аз таъхир паёмро ба канал мефиристад. Goroutine асосӣ интизор аст, ки паёмро аз канал қабул кунад, ки ҳамоҳангсозиро таъмин мекунад.