Sobes.tech
Junior — Middle

Go dilində paralellik və rəqabət necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində paralellik və rəqabət goroutine və kanallar vasitəsilə həyata keçirilir.

  • Goroutine-lər yüngül axınlardır və go açar sözü ilə başlayır. Onlar funksiyaları asinxron və paralel şəkildə icra etməyə imkan verir.

  • Kanallar goroutine-lər arasında kommunikasiya və məlumatların sinxronizasiyası üçün istifadə olunur. Onlar təhlükəsiz şəkildə dəyərləri goroutine-lər arasında ötürməyə imkan verir və yarış şəraitlərinin qarşısını alır.

Nümunə:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("İşçi %d tamamlandı", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }
    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

Beləliklə, Go sadə və effektiv vasitələr təqdim edir, mürəkkəb axın idarəçiliyi olmadan rəqabətli proqramlar yazmağa imkan verir.