Sobes.tech
Junior

Чӣ дар Go кафолат медиҳад бехатарии сатрҳо (thread safety)?

sobes.tech AI

Ҷавоб аз AI

Гаргутинҳо (goroutines) — сабукрави равандҳо, ки имкон медиҳанд, ки код дар параллел иҷро шавад. Каналу (channels) — асосии восита барои мубодилаи бехатарии маълумот байни гаргутинҳо бе истифодаи тағйирёбани умумӣ. Пакети sync — дорои primitives-и ҳамоҳангсозӣ, ба монанди Mutex барои бастани қисмҳои критикӣ, RWMutex барои тақсим кардани бастаҳо барои хондан ва навиштан ва WaitGroup барои интизор шудан ба анҷоми гурӯҳи гаргутинҳо. Масалан, истифодаи mutex барои ҳимояи манбаи умумӣ:

import (
    "sync"
)

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Инчунин, бо истифода аз ин механизмҳо, бехатарии параллел дар Go ба даст меояд.